题目描述:
请实现两个函数,分别用来序列化和反序列化二叉树
二叉树的序列化就是采用前序遍历二叉树输出节点,再碰到左子节点或者右子节点为None的时候输出一个特殊字符”#”
反序列化,就是针对输入的一个序列构建一棵二叉树
思路:
序列化时,用前序遍历将结果存为一个字符串,并用','隔开
反序列化时,弹出序列的第一个元素,
如果是#返回None,
如果不是#递归序列
代码:
class Solution:
def Serialize(self, root):
# write code here
if not root:
return '#'
return str(root.val) + ',' + self.Serialize(root.left) + ',' + self.Serialize(root.right)
def Deserialize(self, s):
# write code here
list = s.split(',')
return self.des(list)
def des(self, list):
if len(list) <= 0:
return None
val = list.pop(0)
root = None
if val != '#':
root = TreeNode(int(val))
root.left = self.des(list)
root.right = self.des(list)
return root