题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
时间限制:1秒 空间限制:32768K 热度指数:316600
本题知识点: 树
了解树的结构,可查看之前的笔记:
认识树和二叉树的常见方法(可以拿这篇文章最后的完整代码进行题目的编写与测试)
题目分析:
很简单,就是将一棵树进行镜面输出,也就是一个结点的左子树变成右子树,它的右子树变成左子树。
这就要遍历每一个结点,将其的左右子树互换。
递归实现,遍历每个结点,就可以想到递归的思想(记得加上结束条件)
function Mirror(root)
{
//结束条件
if(root == null) {
return ;
}
//声明一个变量来存储右结点
var temp = root.right;
//将右结点等于左结点
root.right = root.left;
//将左结点等于右结点
root.left = temp;
//如果存在右结点,继续遍历
Mirror(root.right);
//如果存在左结点,继续遍历
Mirror(root.left);
}
递归解构实现
function Mirror(root)
{
//结束条件
if(root == null) return ;
//解构交换
[root.right, root.left] = [root.left, root.right];
Mirror(root.right);
Mirror(root.left);
}