LeetCode 297 Serialize and Deserialize Binary Tree - Implementation

The approach

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()

O(n)O(n) time, O(n)O(n) space.