题解 | #二叉树的镜像#
二叉树的镜像
https://www.nowcoder.com/practice/a9d0ecbacef9410ca97463e4a5c83be7
方法一:借队列层序遍历每个结点,交换其左右子结点
public TreeNode Mirror (TreeNode pRoot) {
// write code here
if(pRoot==null)return null;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(pRoot);
while(!queue.isEmpty()){
TreeNode node = queue.poll();
TreeNode temp = node.left;
node.left = node.right;
node.right = temp;
if(node.left!=null){
queue.offer(node.left);
}
if(node.right!=null){
queue.offer(node.right);
}
}
return pRoot;
}
方法二:递归
public TreeNode Mirror (TreeNode pRoot) {
// write code here
if(pRoot==null)return null;//递归停止条件
TreeNode temp = pRoot.left;//交换
pRoot.left = pRoot.right;
pRoot.right =temp;
Mirror(pRoot.left);
Mirror(pRoot.right);//左子树执行完后进入到这个递归
return pRoot;
}


