题目
请实现两个函数,分别用来序列化和反序列化二叉树
思路
前序遍历序列化和反序列化,递归即可
代码
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def __init__(self):
self.res_list = []
def seria(self, root):
if root:
self.res_list.append(root.val)
self.seria(root.left)
self.seria(root.right)
else:
self.res_list.append('#')
def Serialize(self, root):
# write code here
self.seria(root)
return self.res_list
def deseria(self, s):
if s[0] == '#':
s.pop(0)
return None
root = TreeNode(s[0])
s.pop(0)
root.left = self.deseria(s)
root.right = self.deseria(s)
return root
def Deserialize(self, s):
# write code here
s = list(s)
return self.deseria(s)