题解 | #序列化二叉树#前序遍历

序列化二叉树

https://www.nowcoder.com/practice/cf7e25aa97c04cc1a68c8f040e71fb84

function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
}
function Serialize(pRoot)
{
    // write code here
    if(!pRoot){
        return '';
    }
    let str = '';
    function dfs(pRoot){
        if(!pRoot){
            str += ',#';
            return;
        }
        str +=','+pRoot.val;
        dfs(pRoot.left);
        dfs(pRoot.right);
    }
    dfs(pRoot);
    console.log(str);
    return str.slice(1);
}
function Deserialize(s)
{
    // write code here
    if(s === ''){
        return null;
    }
    let str = s.split(',');
    let len = str.length;
    let rootVal = str.shift();
    let root = new TreeNode(rootVal);
    let stack = [];
    let cur = root;
    while(str.length || cur){
        let i = 0;
        while(cur){
            stack.push(cur);
            let left = str.shift();
            if(left != '#'){
                cur.left = new TreeNode(left);
            }
            cur = cur.left;
        }
        cur = stack.pop();
        let right = str.shift();
        if(right != '#'){
            cur.right = new TreeNode(right);
        }
        cur = cur.right;
    }
    return root;
    
}
module.exports = {
    Serialize : Serialize,
    Deserialize : Deserialize
};
全部评论

相关推荐

爱吃肉的伊登在写日记:好棒,27届简历能做成这个样子,但是第一个项目感觉cover住难度还是不小的,特别是二面的时候肯定要对分布式系统设计这一块儿有高出正常面试者的水平才行
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务