问题

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

示例

1
2
3
4
5
6
  3
 / \
4   5
   / \
  1   2
不是对称的
1
2
3
4
  3
 / \
4   4
是对称的

解法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
    public boolean isSymmetric(TreeNode root) {
        if(root == null){
            return true;
        }
        return check(root.left, root.right);
    }

    public boolean check(TreeNode leftTree, TreeNode rightTree){
        if(leftTree == null && rightTree == null){
            return true;
        }
        if(leftTree == null || rightTree == null){
            return false;
        }
        if(leftTree.val == rightTree.val){
            return check(leftTree.left, rightTree.right) && check(leftTree.right, rightTree.left);
        }
        return false;
    }
}