5. Serialize and Deserialize Binary Tree
class Node:
def __init__(self, val, left=None, right=None):
self.val = val
self.left = left
self.right = rightnode = Node('root', Node('left', Node('left.left')), Node('right'))
assert deserialize(serialize(node)).left.left.val == 'left.left'def serialize(node):
def r_serialize(node, string):
if root == None:
string += 'None'
else:
string += str(root.val)
string += str(r_serialize(root.left, string))
string += str(r_serialize(root.right, string))
return string
return r_serialize(node, "")
def deserialize(string):
def r_deserialize(lst):
if lst[0] == 'None':
lst.pop(0)
return None
root = lst[0]
lst.pop(0)
root.left = r_deserialize(lst)
root.right = r_deserialize(lst)
return root
data_list = string.split(',')
return r_deserialize(data_list)Last updated