这道题很简单,写了十多分钟就写出来了,一看题目就知道这道题肯定要用递归。先交换左孩子和右孩子,再用递归交换左孩子的左孩子和右孩子,交换右孩子的左孩子和右孩子,其中做一下空判断就行。以下是我的代码:
class Solution {
public TreeNode mirrorTree(TreeNode root) {
if(root == null){
return root;
}else{
return recur(root);
}
}
public TreeNode recur(TreeNode root){
TreeNode temp = new TreeNode();
if(root.left != null && root.right !=null){
temp = root.right;
root.right = root.left;
root.left = temp;
}else if(root.left == null && root.right != null){
root.left = root.right;
root.right = null;
}else if(root.left != null && root.right == null){
root.right = root.left;
root.left = null;
}
if(root.left != null) recur(root.left);
if(root.right != null) recur(root.right);
return root;
}
}
看了一下题解大多数用的递归,还有用辅助栈的。