版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_36811967/article/details/87930518
这里采用先序遍历的方法来做序列化和反序列化。序列化比较简单,反序列化要设置一个index来记录点的位置:
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = 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
l = s.split(',')
self.index = 0
return self.helper(l)
def helper(self, l):
c = l[self.index]
if c == '#':
self.index += 1
return None
root = TreeNode(int(c))
self.index += 1
root.left = self.helper(l)
root.right = self.helper(l)
return root