给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [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) {
return check(root, root);
}
public boolean check(TreeNode p, TreeNode q){
Queue<TreeNode> queuep = new LinkedList<>();
queuep.add(p);
queuep.add(q);
while (!queuep.isEmpty()) {
TreeNode t1 = queuep.poll();
TreeNode t2 = queuep.poll();
if (t1 == null && t2 == null) {
continue;
}
if (t1 == null || t2 == null) {
return false;
}
if (t1.val != t2.val) {
return false;
}
queuep.add(t1.left);
queuep.add(t2.right);
queuep.add(t1.right);
queuep.add(t2.left);
}
return true;
}