Serialize and Deserialize Binary Tree
Hard
Subject: Trees
Time Complexity
O(N)
Space Complexity
O(N)
Problem Description
Design an algorithm to serialize and deserialize a binary tree. There is no restriction on how your serialization/deserialization algorithm should work.
Optimal Solution
Pythondef serialize(root):
def dfs(node):
if not node:
return "None"
return str(node.val) + "," + dfs(node.left) + "," + dfs(node.right)
return dfs(root)
def deserialize(data):
vals = data.split(",")
self.i = 0
def dfs():
if vals[self.i] == "None":
self.i += 1
return None
node = TreeNode(int(vals[self.i]))
self.i += 1
node.left = dfs()
node.right = dfs()
return node
return dfs()