给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [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
解题思路
//左节点的左节点 == 右节点的右节点
//左节点的右节点 == 右节点的左节点
返回判断:
只有根节点也是true,为空也为true;
一边节点为空,一边有,返回false;
数字不相等也返回false
class Solution {
public boolean isSymmetric(TreeNode root) {
return isValid(root, root);
}
public boolean isValid(TreeNode left, TreeNode right){
if(left == null && right == null)
return true;
if(left == null && right != null)
return false;
if(left != null && right == null)
return false;
if(left.val != right.val)
return false;
boolean one = isValid(left.left, right.right);//左节点的左节点 == 右节点的右节点
boolean two = isValid(left.right, right.left);//左节点的右节点 == 右节点的左节点
return one && two;
}
}