美文网首页工作生活
Invert Binary Tree

Invert Binary Tree

作者: carlclone | 来源:发表于2019-07-01 13:58 被阅读0次

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

伪代码:

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
}

相关文章

网友评论

    本文标题:Invert Binary Tree

    本文链接:https://www.haomeiwen.com/subject/tlegcctx.html