# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def __init__(self) -> None:
self.index = 0
self.s = ''
def func1(self, root):
if not root:
self.s += '#'
return
self.s += str(root.val) + '!'
self.func1(root.left)
self.func1(root.right)
def Serialize(self, root):
self.s = ''
if not root:
return '#'
self.func1(root)
return self.s
def func2(self, s):
if self.index >= len(s) or s[self.index] == '#':
self.index += 1
return None
num = 0
while s[self.index] != '!' or self.index >= len(s):
num = num*10 + int(s[self.index])
self.index += 1
node = TreeNode(num)
if self.index == len(s):
return node
else:
self.index += 1
node.left = self.func2(s)
node.right = self.func2(s)
return node
def Deserialize(self, s):
if s == '#':
return None
return self.func2(s)