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;
}
```
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务