题解 | #序列化二叉树#

序列化二叉树

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

/*class TreeNode {
 *     val: number
 *     left: TreeNode | null
 *     right: TreeNode | null
 *     constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.left = (left===undefined ? null : left)
 *         this.right = (right===undefined ? null : right)
 *     }
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 
 * @param root TreeNode类 
 * @return TreeNode类
 */
export function Serialize(root: TreeNode): string {
    if (root === null) return '';
    const res = []
    const queue = [root]
    while(queue.length) {
        const node = queue.shift();
        if (node) {
            res.push(node.val);
            queue.push(node.left)
            queue.push(node.right)
        } else {
            res.push('#')
        }
    }
    
    return res.join(',')
}
export function Deserialize(str: string): TreeNode {
    if (!str) return null
    const arr: string[] = str.split(',')
    const root = new TreeNode(Number(arr.shift()))
    const nodeList = [root]
    while(arr.length) {
        const node = nodeList.shift()
        const left = arr.shift();
        const right = arr.shift();
        if (left !== '#') {
            node.left = new TreeNode(Number(left))
            nodeList.push(node.left)
        }
        if (right !== '#') {
            node.right = new TreeNode(Number(right))
            nodeList.push(node.right)
        }
    }
    return root;
}









全部评论

相关推荐

10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务