Leetcode 226. Invert Binary Tree

利用层序遍历 , 也就是队列

伪代码:

make a queue
push root into queue
if queue is not empty
    node= queue pop
    if has left 
        if left has child
            enqueue left
    if has right
        if right has child
            enqueue right

    tmp = node.left
    node.left=node.right
    node.right=tmp

结果:

func invertTree(root *TreeNode) *TreeNode {
    if root == nil {
        return root
    }
    queue := []*TreeNode{}
    queue = append(queue, root)

    for len(queue) != 0 {
        node := queue[0]
        queue = queue[1:]

        if node.Left != nil {
            if node.Left.Left != nil || node.Left.Right != nil {
                queue = append(queue, node.Left)
            }
        }
        if node.Right != nil {
            if node.Right.Left != nil || node.Right.Right != nil {
                queue = append(queue, node.Right)
            }
        }
        tmp := node.Left
        node.Left = node.Right
        node.Right = tmp
    }
    return root
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!