2471. Minimum Number of Operations to Sort a Binary Tree by Level
思路
就bfs並且用一個array記錄每一個level所有node的值
接著將array的值複製到另外一個矩陣copy_arr
再把copy_arr排列好
最後去比對array跟copy_arr的每個值
如果array[i]跟copy_arr[i]同
就去找array[i]在copy_arr的哪個index並且換過去
每換一次ans就+1
直到array[i]跟copy_arr[i]相等再將i+1去比較下一個值
這樣就可以得到答案了
golang code :
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func minimumOperations(root *TreeNode) int {
queue := []*TreeNode{root}
ans := 0
for len(queue) > 0 {
cnt := len(queue)
arr := []int{}
for cnt > 0 {
node := queue[0]
queue = queue[1:]
if node.Left != nil {
arr = append(arr, node.Left.Val)
queue = append(queue, node.Left)
}
if node.Right != nil {
arr = append(arr, node.Right.Val)
queue = append(queue, node.Right)
}
cnt