题目:给你一个二叉树的根节点
root
, 检查它是否轴对称。
思路:设置递归函数,通过同步移动指针遍历并且比较这棵树,用p指针指向左子树的根节点,q指向右子树的根节点。递归比较p.left, q.right和p.right, q.left。
其中(p==null && q==null)时返回true;
注意:一定要比较(p==null || q==null),不知道为啥不比较就出bug,有大佬说说吗。
class Solution {
public boolean isSymmetric(TreeNode root) {
return checkIs(root,root);
}
public boolean checkIs(TreeNode p,TreeNode q){
if(p==null && q==null){
return true;
}else if(p==null || q==null){
return false;
}
if(p.val!=q.val){
return false;
}
return checkIs(p.left , q.right) && checkIs(p.right , q.left);
}
}