对称二叉树-简单
难度:简单
题目描述:
给定一个二叉树,检查它是否是镜像对称的。
1
/ \
2 2
/ \ / \
3 4 4 3
1
2
3
4
5
2
3
4
5
解题思路:
利用递归
var isSymmetric = function (root) {
if (root === null) return true;
function compare(leftRoot, rightRoot) {
if (leftRoot === null && rightRoot === null) return true;
if (leftRoot === null || rightRoot === null) return false;
if (leftRoot.val !== rightRoot.val) return false;
return (
compare(leftRoot.left, rightRoot.right) &&
compare(leftRoot.right, rightRoot.left)
);
}
return compare(root.left, root.right);
};
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
层序遍历二叉树,判断每一层的二叉树节点的值是否对称
var isSymmetric = function (root) {
if (!root) return true;
let queue = [root];
while (queue.length) {
let size = queue.length;
const levels = [];
while (size-- > 0) {
const ele = queue.shift();
if (ele === null) {
levels.push(ele);
} else {
levels.push(ele.val);
queue.push(ele.left);
queue.push(ele.right);
}
}
let i = 0;
j = levels.length - 1;
while (i < j) {
if (levels[i] !== levels[j]) {
return false;
}
i++;
j--;
}
}
return true;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30