序列化二叉树

题目

请实现两个函数,分别用来序列化和反序列化二叉树

思路

序列化二叉树即将二叉树转化为字符串形式(前中后序),需要注意将空节点标识出来,反序列化需要注意标识是否为空节点

代码

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
const arr = [];
function Serialize(pRoot) {
// write code here
if (pRoot === null) {
arr.push('a');
} else {
arr.push(pRoot.val);
Serialize(pRoot.left);
Serialize(pRoot.right);
}
}
function Deserialize() {
// write code here
let node = null;
if (arr.length < 1) {
return null;
}
const number = arr.shift();
if (typeof number === 'number') {
node = new TreeNode(number);
node.left = Deserialize();
node.right = Deserialize();
}
return node;
}