题目链接:449. 序列化和反序列化二叉搜索树
串行化规则:{root_node},{serilaization_length},{left_node},{right_node}
class Codec:
NULL = ''
def serialize(self, root: TreeNode) -> str:
"""Encodes a tree to a single string.
"""
if root is None:
return self.NULL
l, r = self.serialize(root.left), self.serialize(root.right)
return f'{root.val},{len(l)},{l}{r}'
def deserialize(self, data: str) -> Optional[TreeNode]:
"""Decodes your encoded data to tree.
"""
if data == self.NULL:
return None
val, length, children = data.split(',', 2)
val, length = int(val), int(length)
l, r = self.deserialize(children[:length]), self.deserialize(children[length:])
tree = TreeNode(val)
tree.left = l
tree.right = r
return tree