# -*- 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 root is None:
return "#"
# 递归序列化左子树和右子树
left = self.Serialize(root.left)
right = self.Serialize(root.right)
# 返回序列化后的字符串,用逗号分隔
return str(root.val) + ',' + left + ',' + right
def Deserialize(self, s):
# write code here
if s is None:
return None
nodes = s.split(',')
def helper():
nonlocal nodes
# 如果列表为空,返回 None
if not nodes:
return None
# 取出列表的第一个元素
val = nodes.pop(0)
# 如果元素为 "#",表示空节点
if val == '#':
return None
# 创建当前节点
node = TreeNode(int(val))
# 递归构建左子树
node.left = helper()
# 递归构建右子树
node.right = helper()
return node
return helper()
# if s[0] == '#':
# cur_TreeNode = None
# return cur_TreeNode
# else:
# cur_TreeNode = TreeNode(s[0])
# s.pop(0)
# if len(s) >=1:
# cur_TreeNode.left = self.Deserialize(s[1:])
# if len(s) >=2:
# cur_TreeNode.right = self.Deserialize(s[2:])
# return cur_TreeNode