#!/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