题解 | #二叉树的镜像#
二叉树的镜像
http://www.nowcoder.com/practice/a9d0ecbacef9410ca97463e4a5c83be7
这个代码时间复杂度空间复杂度都比较高,耗时长。
import java.util.*;
public class Solution {
public TreeNode Mirror (TreeNode pRoot) {
Queue <TreeNode> queue = new LinkedList();
if (pRoot==null) return null;
queue.add(pRoot);
while(queue.isEmpty()==false){
TreeNode node = queue.poll();
// 交换该节点的左右子树
TreeNode left = node.left;
node.left = node.right;
node.right = left;
// 如果左右子树存在则让他们进队。
if(node.left!=null){
queue.add(node.left);
}
if(node.right!=null){
queue.add(node.right);
}
}
return pRoot;
}
}
递归版本的,时长比上面的更长。。。
import java.util.*;
public class Solution {
public TreeNode Mirror (TreeNode root) {
// write code here
if (root == null)
return null;
Mirror(root.left);
//子节点交换
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
//上面交换过了,这里root.right要变成root.left
Mirror(root.left);
return root;
}
}