序列化与反序列化二叉树
题目:二叉树的序列化与反序列化
数据结构学习过,由先序中序,后序中序可以唯一确定一颗二叉树,先序后序不能确定一颗二叉树
使用#法也可以唯一确定一颗二叉树 , 这里使用#法
let result = []
function serialization(root) {
result.push(root.val)
if (root.left)
servialize(root.left)
else
result.push('#')
if (tree.right)
servialize(root.right)
else
result.push('#')
}
反序列化
let result = [
1, 2, 4, '#', '#', 5,
'#', '#', 3, 6, 8, '#',
'#', '#', 7, '#', '#'
]
function deSerialization(result) {
let node
if(arr.length){
let cur = result.shift() // 注意这里用的是shift,没有用for循环,这样在递归中来用
if (cur !== '#') {
node = { val: cur,left:undefined,right:undefined }
node.left = deServialize(result)
node.right = deServialize(result)
}else{
node = undefined
}
return node
}