首先需要序列化,然后再反序列化
序列化利用字符分解,添加‘,’地方式分割,然后一次添加二叉树的左节点和右节点
之后反序列化:
利用前面的,分割,直接生成一个列表‘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