js序列化和反序列化二叉树
序列化二叉树
http://www.nowcoder.com/questionTerminal/cf7e25aa97c04cc1a68c8f040e71fb84
//看了js榜前面的好多都把arr放外面,导致两个函数的传参毫无意义,换成闭包即可解决
```
function Serialize(pRoot){
let arr = [];//闭包放数组
function kao(pRoot){
// write code here
if(pRoot==null){
arr.push('#');
}else{
arr.push(pRoot.val);
kao(pRoot.left);
kao(pRoot.right);
}
}
kao(pRoot);//调用递归
return arr;//返回序列化
}
function Deserialize(arr)//反序列传参是二叉树数组
{
var node = null;
if(arr.length<1){
return null;
}
var number = arr.shift();
if(number != '#'){
node = new TreeNode(number);
node.left = Deserialize(arr);
node.right = Deserialize(arr);
}
return node;
}
```