LeetCode 101 判断一棵树是一个对称二叉树

265 阅读1分钟
给定一个二叉树,检查它是否是镜像对称的。

 

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

    1
   / \
  2   2
 / \ / \
3  4 4  3
 

但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:

    1
   / \
  2   2
   \   \
   3    3

class Solution {
    public boolean isSymmetric(TreeNode root) {
        if(root == null) return true;
        return isSymmetricHeli(root.left,root.right);
    }

      public  boolean isSymmetricHeli(TreeNode left,TreeNode right){
        // 左右都为空,对称
        if(left == null && right == null) return true;
        // 左为空右不为空  或者 右为空左不为空 不对称 
        else if(left !=null && right == null || left == null && right !=null){
            return false;
        } 
        // 左右都不为空、值相等
        // 递归左节点的左孩子和右节点的右孩子、左节点的右孩子和右节点的左孩子 都符合返回true 
        else if(left.val == right.val && isSymmetricHeli(left.left,right.right) && isSymmetricHeli(left.right,right.left)){
            return true;
        }
        return false;
        }
}

image.png