master-algorithms-py/trees/bt_serialization.py

48 lines
1.4 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author: bt3gl
'''
Serialization is the process of converting a data structure or object into
a sequence of bits so that it can be stored in a file or memory buffer, or
transmitted across a network connection link to be reconstructed later in
the same or another computer environment.
Design an algorithm to serialize and deserialize a binary tree. There is no
restriction on how your serialization/deserialization algorithm should work.
You just need to ensure that a binary tree can be serialized to a string and
this string can be deserialized to the original tree structure.
'''
class Codec:
def serialize(self, root):
def helper(root, string):
if root is None:
string += 'None,'
else:
string += str(root.val) + ','
string = helper(root.left, string)
string = helper(root.right, string)
return string
return helper(root, '')
def deserialize(self, data):
def helper(data):
if data[0] == 'None':
data.pop(0)
return None
root_val = data.pop(0)
root = TreeNode(root_val)
root.left = helper(data)
root.right = helper(data)
return root
root = helper(data.split(','))
return root