101. 对称二叉树
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [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) {
//使用两个指针p、q,初始同时指向根节点
//p左移时q右移。p右移时q左移。判断是否相等
return check(root,root);
}
public boolean check(TreeNode p,TreeNode q)
{
if(p==null && q == null)
return true;
if(p == null || q == null )
return false;
//此处肯定要写.val,不是对比节点本身,节点本身肯定是不相同的。
return p.val==q.val && check(p.left, q.right) && check(p.right,q.left);
}
}