给你一个二叉树的根节点 root , 检查它是否轴对称。
示例 1:
输入:root = [1,2,2,3,4,4,3]
输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3]
输出:false
提示:
树中节点数目在范围 [1, 1000] 内
-100 <= Node.val <= 100
来源:力扣(LeetCode)
链接:OJ链接
public boolean isSymmetric(TreeNode root) {
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;
}
return p.val == q.val && check(p.left, q.right) && check(p.right, q.left);
}
}
class Solution {
public boolean isSymmetriChild(TreeNode p,TreeNode q){
if(p==null&&q!=null) return false;
if(p!=null&&q==null) return false;
if(p==null&&q==null) return true;
if(p.val!=q.val) return false;
return isSymmetriChild(p.left,q.right)&&isSymmetriChild(p.right,q.left);
}
public boolean isSymmetric(TreeNode root) {
if(root==null) return true;
return isSymmetriChild(root.left,root.right);
}
}