剑指offer之个人刷题历程记录
二叉树的镜像
题目描述: 操作给定的二叉树,将其变换为源二叉树的镜像。) 知识点: 二叉树 解题思路: 我们求得一棵树的镜像的过程:我们先前序遍历这棵树的每个结点,如果遍历到的结点有左右子树,即有左右子结点。则交换它的两个子结点。交换完所有非叶子结点的子结点之后,得到树的镜像。 具体代码:
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public void Mirror(TreeNode root) {
if(root==null)
return;
if(root.left==null&&root.right==null)
return;
TreeNode temp=root.left;
root.left=root.right;
root.right=temp;
if(root.left!=null)
Mirror(root.left);
if(root.right!=null)
Mirror(root.right);
}
}
注意点: 对树的遍历清楚,对递归的过程清楚。
