# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def __init__(self):
        self.index = -1  # 用于反序列化时追踪位置
    
    def Serialize(self, root):
        # 序列化为一个列表
        if root is None:
            return ['#']
        # 先序遍历
        return [root.val] + self.Serialize(root.left) + self.Serialize(root.right)

    def Deserialize(self, s):
        self.index +=1
        if self.index >= len(s) or s[self.index] == '#':
            return None
		#同样先序
        root = TreeNode(s[self.index])
        root.left = self.Deserialize(s)
        root.right = self.Deserialize(s)
        return root