美文网首页
2020-05-25 【翻转二叉树】

2020-05-25 【翻转二叉树】

作者: Spring_java | 来源:发表于2020-05-25 10:15 被阅读0次

    翻转一棵二叉树。

    输入:
         4
       /   \
      2     7
     / \   / \
    1   3 6   9
    输出:
       4
       /   \
      7     2
     / \   / \
    9   6 3   1
    
    

    解答

    • 递归 后序遍历

    代码:

    func invertTree(root *TreeNode) *TreeNode {
        if root==nil {// 递归结束条件
            return nil
        }
    
        // 当前需要一级需要做的是把 左节点指向右节点 右节点指向已经翻转的左节点
        temp := root.Left
        root.Left = root.Right
        root.Right = temp
    
        invertTree(root.Left) // 翻转的左节点
        invertTree(root.Right)// 返翻转的右节点
    
        return root
    }
    
    • 递归 前序遍历
    func invertTree(root *TreeNode) *TreeNode {
        if root==nil {// 递归结束条件
            return nil
        }
        right:= invertTree(root.Right)// 返回已经翻转的右节点
        left := invertTree(root.Left) // 返回已经翻转的左节点
        // 当前需要一级需要做的是把 左节点指向已经翻转的右节点 右节点指向已经翻转的左节点
        root.Left = right
        root.Right = left
        return root
    }
    
    

    相关文章

      网友评论

          本文标题:2020-05-25 【翻转二叉树】

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