题目描述
请完成一个函数,输入一个二叉树,该函数输出它的镜像。
例如输入:
1 | 4 |
镜像输出:
1 | 4 |
示例一:
1 | 输入:root = [4,2,7,1,3,6,9] |
题解
递归方法
在解题之前要先了解 二叉树的镜像 是什么:
二叉树镜像定义: 对于二叉树中任意节点
root
,设其左 / 右子节点分别为left
,right
;则在二叉树的镜像中的对应root
节点,其左 / 右子节点分别为right
,left
。
递归的思路很简单, 就是遍历每个节点, 交换其左右子树即可
- 终止条件: 当节点
root
为空时, 返回null
- 递归过程:
- 初始化一个临时节点
temp
暂存 左儿子 - 令左儿子等于右儿子
- 令右儿子等于临时节点
- 初始化一个临时节点
- *返回值: *当前的节点
root
1 | public class jz27 { |
栈遍历方法
利用栈或队列遍历树的所有节点, 交换每个节点的左右儿子
1 | public TreeNode mirrorTree(TreeNode root) { |