101. 对称二叉树
给定一个二叉树,检查它是否是镜像对称的。
例子
例子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
代码
public boolean isSymmetric(TreeNode root){
if(root == null){
return true;
}
return compare(root.left,root.right);
}
public boolean compare(TreeNode left,TreeNode right){
//递归边界
if(left == null && right == null){
return true;
}
if(left == null || right == null || left.val != right.val){
return false;
}
return compare(left.left, right.right)&&compare(left.right,right.left);
}
思路
注意事项
碰到要用递归的题,一定要注意找到递归边界,如这题 当前结点的左右结点都是空的,当前就一定是对称的,如果左右结点有一个是空,有一个不是空,或者左右结点不一样,那当前结点就不是对称的。