题目
题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:
源二叉树
镜像二叉树
分析
采用递归思想(套先序遍历模板):
如果一个节点不是叶节点,则将它的左右孩子互换;
接着将它的左右孩子都转为镜像;
直到该节点为空或者为叶节点为止。
例如:
先访问8,则将它的左右孩子互换,为:
再将8的左右孩子10,6进行镜像操作,访问10,交换其左右孩子:
访问6,交换其左右孩子:
接下来访问的11,9,7,5都为叶子节点,跳出递归,镜像转换结束。
代码
public class Solution {
public void Mirror(TreeNode root) {
if(root == null){
return; //递归跳出的条件
}
if(root.left==null && root.right==null){
return; //叶子节点
}
//将节点的左右孩子交换
TreeNode node = root.left;
root.left = root.right;
root.right = node;
//递归
Mirror(root.left);
Mirror(root.right);
}
}