背景
这个题非常不错,自己解决的,把他记录下来
剑指 Offer 37. 序列化二叉树
用的BFS的方法解决的这个问题,主要是使用的队列
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* Encodes a tree to a single string.
*
* @param {TreeNode} root
* @return {string}
*/
var serialize = function(root) {
if (!root) return JSON.stringify([]);
let res = [];
let queue = [root];
while (queue.length) {
let node = queue.shift();
if (node !== null) {
res.push(node.val);
queue.push(node.left);
queue.push(node.right);
} else {
res.push(null)
}
}
return JSON.stringify(res);
};
/**
* Decodes your encoded data to tree.
*
* @param {string} data
* @return {TreeNode}
*/
var deserialize = function(data) {
if (data === '[]') return null;
let arr = JSON.parse(data);
let root = new TreeNode(arr[0]);
let queue = [root];
let i = 1;
while (queue.length){
let node = queue.shift();
if (arr[i] !== null) {
node.left = new TreeNode(arr[i]);
queue.push(node.left);
}
i++;
if (arr[i] !== null) {
node.right = new TreeNode(arr[i]);
queue.push(node.right);
}
i++;
}
return root;
};
/**
* Your functions will be called as such:
* deserialize(serialize(root));
*/