首先需要序列化,然后再反序列化
序列化利用字符分解,添加‘,’地方式分割,然后一次添加二叉树的左节点和右节点
之后反序列化:
利用前面的,分割,直接生成一个列表‘list = s.split(',')’
调用生成二叉树函数:
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(',')//利用split和逗号分隔,并放入列表中
return self.DeserializeTree(list)//直接返回列表的反序列化值
def DeserializeTree(self, list)://建立反序列二叉树的函数
if len(list) <= 0:
return None
val = list.pop(0)//这里关键,将列表的值挨个减掉,并复制给val,自己调用自己
root = None
if val != '#'://如果不是空节点,
root = TreeNode(int(val))//节点就是二叉树的值,直接调用了Treenode
root.left = self.DeserializeTree(list)//左节点
root.right = self.DeserializeTree(list)//右节点
return root
京公网安备 11010502036488号