题目描述
题目转载自Leetcode
请完成一个函数,输入一个二叉树,该函数输出它的镜像。
例如输入:
示例 1:
输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]
题解 递归法
题解转载自leetcode官方
根据二叉树镜像的定义,考虑递归遍历(dfs)二叉树,交换每个节点的左 / 右子节点,即可生成二叉树的镜像。
递归解析:
终止条件: 当节点 root 为空时(即越过叶节点),则返回 null ;
递推工作:
开启递归 右子节点 mirrorTree(root.right) ,并将返回值作为 root 的 左子节点 。
开启递归 左子节点 mirrorTree(tmp) ,并将返回值作为 root 的 右子节点 。
本层操作:递归到最深层节点开始交换
class Solution {
public TreeNode mirrorTree(TreeNode root) {
//终止条件
if (root == null) {
return null;
}
//对左右子树分别递归
TreeNode left = mirrorTree(root.left);
TreeNode right = mirrorTree(root.right);
root.left = right;//本层操作:递归到最深层节点开始交换
root.right = left;
return root;//返回值
}
}