对称的二叉树

题目描述

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

思路

1.只要pRoot.left和pRoot.right是否对称即可
2.左右节点的值相等且对称子树left.left, right.right ;left.rigth,right.left也对称
善用root.left和root.right,这都是可用的条件,我做题时,经常卡在只用一个root节点传参就解决的想法上,不可取。

个人解法
public class Solution {
    boolean isSymmetrical(TreeNode pRoot)
    {
        if(pRoot==null){
            return true;
        }
        return isMirror(pRoot.left,pRoot.right);
        
    }
    
  public   boolean isMirror(TreeNode left,TreeNode right){
                if(left==null&&right==null){
            return true;
        }
        
      //能到这一步说明两个肯定不同时为null,如果没有这一步,下面的if会报空指针
       if(left==null||right==null){
            return false;
        }
         if(left.val!=right.val){
            return false;
        }
      //又出现了 && 可以同时判断两个条件,有一个不成立就是false
        return (isMirror(left.left,right.right)&&isMirror(left.right,right.left));
    }

}

你可能感兴趣的:(对称的二叉树)