题解 | #序列化二叉树#

序列化二叉树

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 === null) return ''
    const result = []
    const queue = [pRoot]
    while (queue.length > 0) {
        const currentNode = queue.shift()
        if (currentNode !== null) {
            result.push(currentNode.val)

            queue.push(currentNode.left)
            queue.push(currentNode.right)
        } else {
            result.push('#')
        }
    }
    let validIndex = result.length - 1
    while (result[validIndex] === '#') {
        validIndex--
    }
    const validResult = result.slice(0, validIndex + 1)
    return validResult.join(',')
}
function Deserialize(s)
{
    // write code here
    if (s.length === 0) return null
    const valArray = s.split(',')
    const headVal = valArray.shift()
    const head = new TreeNode(headVal)
    const nodeQueue = [head]
    while (nodeQueue.length > 0) {
        const currentNode = nodeQueue.shift()
        const leftVal = valArray.shift()
        const rightVal = valArray.shift()
        if (leftVal && leftVal !== '#') {
            const left = new TreeNode(leftVal)
            currentNode.left = left
            nodeQueue.push(left)
        }
        if (rightVal && rightVal !== '#') {
            const right = new TreeNode(rightVal)
            currentNode.right = right
            nodeQueue.push(right)
        }
    }
    return head
}
module.exports = {
    Serialize : Serialize,
    Deserialize : Deserialize
};

全部评论

相关推荐

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