牛客(58)对称的二叉树

//    题目描述
//    请实现一个函数,用来判断一颗二叉树是不是对称的。
//    注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;

        public TreeNode(int val) {
            this.val = val;

        }

    }
    boolean isSymmetrical(TreeNode pRoot)
    {
//        检查不过
//        if (pRoot==null){
//            return false;
//        }
//        二叉树镜像
        TreeNode image = getImage(pRoot);
//        比较
        return isSymmetrical(pRoot,image);
    }

    private boolean isSymmetrical(TreeNode pRoot, TreeNode image) {
        if (pRoot==null&&image==null){
            return true;
        }else if (pRoot==null||image==null){
            return false;
        }


        if (pRoot.val==image.val){
            return isSymmetrical(pRoot.right,image.right)&&isSymmetrical(pRoot.left,image.left);
        }
        return false;
    }

    private TreeNode getImage(TreeNode pRoot) {
        if (pRoot==null){
            return null;
        }
        TreeNode image = new TreeNode(pRoot.val);
        image.right = getImage(pRoot.left);
        image.left = getImage(pRoot.right);
        return image;
    }
原文地址:https://www.cnblogs.com/kaibing/p/9109234.html