对称的二叉树

一般都会让我们去判断二叉树是否是对称的?

看了我的上一篇博客    二叉树的镜像

感觉和这篇博客像像的,其实也就是像像的

对称二叉树:两边相同等的位置的节点的值一样,说白了就是从主树干折过去完全覆盖

代码:

public class Main {
    public boolean isSymmetrical(TreeNode root){
        //通过重载,来将树分开,两边来比较是否相等
        return isSymmetrical(root.left,root.right);
    }
    public boolean isSymmetrical(TreeNode left,TreeNode right){
        if(left==null&&right==null){
            return true;
        }
        if(left==null||right==null){
            return false;
        }
        if(left.data!=right.data){
            return false;
        }
        //靠树主干分割线的相比较(左子树的右子树与对称位置的右子树的左子树比较),
        //远离主干分割线的、也就是靠外的相比较(左子树的左子树与对称位置的右子树的右子树比较)
        return isSymmetrical(left.left,right.right)&&isSymmetrical(left.right,right.left);
    }
}
class TreeNode{
    int data;
    TreeNode left;
    TreeNode right;
    public TreeNode(int data){
        this.data=data;
        this.left=null;
        this.right=null;
    }
}

 

posted @ 2019-09-14 20:44  _SpringCloud  阅读(12)  评论(0)    收藏  举报  来源