题解 | #二叉树的镜像#

二叉树的镜像

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;
    }
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务