题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树
8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5
答案
public class Solution {
public void Mirror(TreeNode root) {
if(root != null){
if(root.left!=null || root.right!=null){
Mirror(root.left);
Mirror(root.right);
}
TreeNode t = null;
t = root.left;
root.left = root.right;
root.right = t;
}
}
}
解析
第一想法是使用递归解决,需要进行两路判断,重复递归到底层,关键问题在于结束的点怎么判断,我这里的代码是对两路判断比较放松,用的或进行判断,可能导致空指针异常,所以要在整体代码上加上一个root指针是否为空的判断。
另外注意,即使进行双路比较严格的判断,对左路右路都进行非空判断,仍然要加上这个判断,因为有可能直接给一个空树
Comments | NOTHING