序列化与反序列化二叉树

 

 

 

题目:二叉树的序列化与反序列化

 

 

数据结构学习过,由先序中序,后序中序可以唯一确定一颗二叉树,先序后序不能确定一颗二叉树

 

使用#法也可以唯一确定一颗二叉树 , 这里使用#法

 

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
}
posted @ 2020-05-17 17:06  hh9515  阅读(119)  评论(0)    收藏  举报