题解 | #序列化二叉树#
序列化二叉树
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 };