题解 | #序列化二叉树#
序列化二叉树
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
};
查看7道真题和解析