跳至主要內容

28-对称的二叉树

daipeng小于 1 分钟

请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。

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

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

我们可以给对称二叉树一个简单的定义,即如果某一个结点的左子结点右子结点分别与其兄弟节点的右子结点左子结点相同,那么说明该结点和其兄弟节点的子结点一层是对称的。

public boolean isSymmetric(TreeNode root) {
        if (root == null) {
            return true;
        }
        return isSymmetricCore(root.left, root.right);//判断左子节点和右子节点
    }

    public boolean isSymmetricCore(TreeNode left, TreeNode right) {
        if (left == null && right == null) {
            return true;
        } else if (left == null || right == null) {
            return false;
        }
        return left.val == right.val
          && isSymmetricCore(left.left, right.right) //判断左和右节点是相同的
          && isSymmetricCore(left.right, right.left);//判断右和左节点是相同的
    }