美文网首页
297. Serialize and Deserialize B

297. Serialize and Deserialize B

作者: jluemmmm | 来源:发表于2021-01-11 13:56 被阅读0次

    二叉树序列化与反序列化

    • Runtime: 172 ms, faster than 42.05%
    • Memory Usage: 49.5 MB, less than 31.68%
    /**
     * 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 '[]'
        let queue = [root]
        let res = []
        while(queue.length > 0) {
            const node = queue.shift()       
            if(node) {
                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) {
        let res = JSON.parse(data)
        if(res.length === 0) return null
        
        let root = new TreeNode(res.shift())
        let queue = [root]
        for (let i = 0; i < res.length; i++) {
            const node = queue.shift()
            if (res[i] !== null) {
                let left = new TreeNode(res[i])
                node.left = left
                queue.push(left)
            } 
            if (res[++i] !== null) {
                let right = new TreeNode(res[i])
                node.right = right
                queue.push(right)
            } 
        }
        return root
    };
    
    /**
     * Your functions will be called as such:
     * deserialize(serialize(root));
     */
    

    相关文章

      网友评论

          本文标题:297. Serialize and Deserialize B

          本文链接:https://www.haomeiwen.com/subject/dqkdaktx.html