【LeetCode算法修炼+动画演示】——226. 翻转二叉树

一世执手 提交于 2020-01-31 03:13:02

226. 翻转二叉树

原题链接
翻转一棵二叉树。

示例:

输入:

     4
   /   \
  2     7
 / \   / \
1   3 6   9

输出:

     4
   /   \
  7     2
 / \   / \
9   6 3   1

备注:
这个问题是受到 Max Howell原问题 启发的 :

谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。

要点

比对一下题目这两个代码图片。如果按每一层来看的话,就是把结点的左右两侧子树进行交换
第二层交换

     4
   /   \
  7     2
 / \   / \
6   9 1   3

第三层交换

     4
   /   \
  7     2
 / \   / \
9   6 3   1

递归

代码片段

func invertTree(root *TreeNode) *TreeNode {
    if root == nil {
        return nil
    }
    root.Left, root.Right = root.Right, root.Left
    if root.Left != nil {
        invertTree(root.Left)
    }
    if root.Right != nil {
        invertTree(root.Right)
    }
    return root
}

代码解释

先序遍历的过程,只是这个额外做了交换操作。


😁😁😁制作动画过程不易,请大家顺手点赞收藏咯 谢谢~😁😁😁
有其它题目不理解的也可以一起学习,如有错误欢迎指出~
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!