import sys
class Codec:
def serialize(self, root: TreeNode) -> str:
"""Encodes a tree to a single string.
"""
if not root:
return ''
self.res = []
self.preoder(root)
return '#'.join(self.res)
def preoder(self, node):
if node == None:
return
self.res.append(str(node.val))
if node.left != None:
self.preoder(node.left)
if node.right != None:
self.preoder(node.right)
def deserialize(self, data: str) -> TreeNode:
"""Decodes your encoded data to tree.
"""
if len(data) == 0:
return None
num = data.split('#')
num = [int(s) for s in num]
print(num)
self.node = self.constructTree(-sys.maxsize, sys.maxsize,num)
return self.node
def constructTree(self, min, max, num):
if len(num) == 0:
return None
#num.pop(0)
if not(min < num[0] < max):
return None
val = num[0]
print(val)
node = TreeNode(val)
num.pop(0)
node.left = self.constructTree(min, val, num)
node.right = self.constructTree(val, max, num)
return node
449. 序列化和反序列化二叉搜索树
最新推荐文章于 2022-05-11 22:06:12 发布