def serialize(self, root):
"""Encodes a tree to a single string.
:type root: TreeNode
:rtype: str
"""
def preorder(node):
if node:
data.append(str(node.val))
preorder(node.left)
preorder(node.right)
else:
data.append('#')
data = []
preorder(root)
return ' '.join(data)
def deserialize(self, data):
"""Decodes your encoded data to tree.
:type data: str
:rtype: TreeNode
"""
def preorder():
val = next(vals)
if val == '#':
return None
node = TreeNode(int(val))
node.left = preorder()
node.right = preorder()
return node
vals = iter(data.split())
return preorder()