给你一个二叉树的根节点 root , 检查它是否轴对称。

思路

  1. 左子树的左孩子 和 右子树的右孩子 是否镜像对称
  2. 左子树的右孩子 和 右子树的左孩子 是否镜像对称
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var isSymmetric = function(root) {
const check = (node1, node2) => {
if (!node1 && !node2) {
return true
}
if (!!node1 ^ !!node2) {
return false
}
return node1.val === node2.val
&& check(node1.left, node2.right)
&& check(node1.right, node2.left)
}
return check(root.left, root.right)
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var isSymmetric = function(root) {
if (!root) {
return true
}
const queue = [root.left, root.right]
let curIndex = 0
while (curIndex < queue.length) {
const [node1, node2] = [queue[curIndex++], queue[curIndex++]]
if (!node1 && !node2) {
continue
}
if (!!node1 ^ !!node2) {
return false
}
if (node1.val !== node2.val) {
return false
}
queue.push(node1.left, node2.right, node1.right, node2.left)
}
return true
};