-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.ts
63 lines (50 loc) · 1.65 KB
/
index.ts
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/**
*
@see https://leetcode-cn.com/problems/symmetric-tree/
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [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
*/
namespace isSymmetric{
class TreeNode {
val: number
left: TreeNode | null
right: TreeNode | null
constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
this.val = (val === undefined ? 0 : val)
this.left = (left === undefined ? null : left)
this.right = (right === undefined ? null : right)
}
}
//检测相反位置的节点值。
function isSymmetric(root: TreeNode | null): boolean {
const leftQueue: Array<TreeNode | null> = []
const rightQueue: Array<TreeNode | null> = []
leftQueue.push(root)
rightQueue.push(root)
while (leftQueue.length > 0 || rightQueue.length > 0) {
const leftCurrent = leftQueue.shift()
const rightCurrent = rightQueue.shift()
if (
leftCurrent?.val !== rightCurrent?.val
) {
return false
}
leftCurrent?.left !== undefined && leftQueue.push(leftCurrent?.left)
leftCurrent?.right !== undefined && leftQueue.push(leftCurrent?.right)
rightCurrent?.right !== undefined && rightQueue.push(rightCurrent?.right)
rightCurrent?.left !== undefined && rightQueue.push(rightCurrent?.left)
}
return true
};
}