剑指 Offer 27. 二叉树的镜像
226. 翻转二叉树
题目描述
请完成一个函数,输入一个二叉树,该函数输出它的镜像。
输出输出
1 2
| 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]
|
基本思路
- 终止条件: 当节点 root为空时(即越过叶节点),则返回 null ;
- 递推工作:
- 初始化节点 tmp ,用于暂存 root 的左子节点;
- 开启递归 右子节点 mirrorTree(root.right) ,并将返回值作为 root的 左子节点 。
- 开启递归 左子节点 mirrorTree(tmp),并将返回值作为 root 的 右子节点 。
java实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class Solution { public TreeNode mirrorTree(TreeNode root) { if(root == null) return null; TreeNode tmp = root.left; root.left = mirrorTree(root.right); root.right = mirrorTree(tmp); return root; } }
class Solution { public TreeNode invertTree(TreeNode root) { if(root == null) return root; TreeNode tmp = root.left; root.left = root.right; root.right = tmp; invertTree(root.left); invertTree(root.right); return root; } }
|