听说一位巨佬面Google被拒了,因为没写出翻转二叉树 | LeetCode:226.翻转二叉树_哔哩哔哩_bilibili
思想:首先确定遍历方式
二叉树有两种遍历方式: 递归遍历和 迭代遍历
首先确定遍历方式
这里采用诋递归遍历方式.
递归遍历最基础的有三种遍历顺序: 前 ``中 后
这道题用 前序 后序 好做,用层序也可以。
我们反转二叉树不是交换两个节点的值,而是交换它们的指针。
为什么是交换指针呢?因为交换指针可以把孩子节点也给交换了。
如图(a-1)是原树,交换左右子树指针之后变为了图(a-2),此时再递归遍历左子树,然后交换左子树孩子节点指针,变为图(a-3),此时左子树遍历到空,向上返回。
再去遍历右子树孩子节点,交换右子树孩子节点指针,变为图(a-4),此时完成反转二叉树。
交换完 根节点 的左右孩子 节点之后,再递归左子树,然后再交换左子树,
这里设置递归结束条件 : 当递归遍历到空节点时 结束递归。
这时候我们再递归右子树,交换右子树。右子树也遍历到空,就结束递归,此时整个二叉树就完成反转了。