题解 | #对称的二叉树#

对称的二叉树

https://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb

//先将原树复制一份,再造一颗原树的镜像树,判断两棵树是否相等 
public class Solution {

    boolean isSymmetrical(TreeNode pRoot) {
        TreeNode tree = pRoot;
        pRoot = copy(pRoot);
        tree = Mirror(tree);
        return isSameTree(tree, pRoot);

    }

    //判断是否为同一棵树
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if (p == null && q == null) {
            return true;
        }
        if (p != null && q == null || p == null && q != null) {
            return false;
        }
        if (p.val != q.val) {
            return false;
        }

        return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
    }
    //生成镜像树
    public TreeNode Mirror (TreeNode pRoot) {
        if (pRoot == null) {
            return null;
        }
        TreeNode temp = pRoot;
        temp = pRoot.left;
        pRoot.left = pRoot.right;
        pRoot.right = temp;
        Mirror(pRoot.left);
        Mirror(pRoot.right);
        return pRoot;

    }
    //树的复制
    private static TreeNode copy(TreeNode t) {
        TreeNode newT = null;

        if (t == null) {
            return null;
        } else {
            newT = new TreeNode(t.val);
            newT.left = copy(t.left);
            newT.right = copy(t.right);
            return newT;
        }
    }

}

全部评论

相关推荐

船长想实习:我啥技术不会决定去试试,然后进去也不干活就搅局可以吗?
点赞 评论 收藏
分享
01-26 19:51
门头沟学院 Java
isabener:怎么感觉像群发的呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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