Preorder with null markers. Comma-separated.
def serialize(root): def dfs(node): if not node: return ['null'] return [str(node.val)] + dfs(node.left) + dfs(node.right) return ','.join(dfs(root))
def deserialize(data): values = iter(data.split(',')) def dfs(): val = next(values) if val == 'null': return None node = TreeNode(int(val)) node.left = dfs() node.right = dfs() return node return dfs()
time, space.