問題描述
????操作給定的二叉樹,將其變換為源二叉樹的鏡像。

trees.png
解題思路
????我們可以總結(jié)出這兩棵樹的根節(jié)點相同,但它們的左、右兩個子節(jié)點交換了位置。所以我們可以得出求一棵樹的鏡像的過程:先前序遍歷這棵樹的每個節(jié)點,如果遍歷到的節(jié)點有子節(jié)點,就交換它的兩個子節(jié)點。當交換完所有非葉節(jié)點的左、右子節(jié)點之后,就得到了樹的鏡像。
public class Solution {
/**
* 二叉樹的構(gòu)造 內(nèi)部類
*/
public class TreeNode{
int val;
TreeNode left=null;
TreeNode right=null;
public TreeNode(int val) {
this.val = val;
}
}
public static void Mirror(TreeNode root) {
if (root==null){
return;
}
//交換左右節(jié)點
TreeNode temp;
temp=root.left;
root.left=root.right;
root.right=temp;
//魯棒性考慮
if (root.left!=null) {
Mirror(root.left);
}
if (root.right!=null) {
Mirror(root.right);
}
}
}