题解 | #二叉树的镜像#

二叉树的镜像

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

相关推荐

10-15 03:05
门头沟学院 Java
CADILLAC_:凯文:我的邮箱是死了吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务