331. 验证二叉树的前序序列化

序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。

链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function isValidSerialization(preorder: string): boolean {
const n = preorder.length
let i = 0
let slots = 1
while(i < n) {
if (slots === 0) {
return false
}
if (preorder[i] === ',') {
++i
} else if (preorder[i] === '#') {
--slots
++i
} else {
// 用while是因为有可能是2位数以上的数字
while(i < n && preorder[i] !== ',') {
++i
}
slots = slots - 1 + 2
}
}
return slots === 0
};