# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#这道题里的序列化和反序列化都用的递归,思路比较简单。序列化用的前序遍历;反序列化根据前序遍历的顺序,依次处理root、左子树和右子树
class Solution:
def __init__(self):
self.split_s=[]
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):
if s==None:
return None
if s=="#":
return None
self.split_s=s.split(',')
return self.construct()
def construct(self):
if self.split_s[0]=="#":
self.split_s=self.split_s[1:]
return None
node=TreeNode(int(self.split_s[0]))
node.left=None
node.right=None
self.split_s=self.split_s[1:]
node.left=self.construct()
node.right=self.construct()
return node
# write code here