From bd0a4c9ee3c25d69499ec3b6ae0b35de2949cf0e Mon Sep 17 00:00:00 2001 From: bt3gl <138340846+cypher-bt3gl@users.noreply.github.com> Date: Sat, 29 Jul 2023 18:11:41 -0700 Subject: [PATCH] Create tree_serialization.py --- trees_and_graphs/tree_serialization.py | 43 ++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 trees_and_graphs/tree_serialization.py diff --git a/trees_and_graphs/tree_serialization.py b/trees_and_graphs/tree_serialization.py new file mode 100644 index 0000000..4a927d0 --- /dev/null +++ b/trees_and_graphs/tree_serialization.py @@ -0,0 +1,43 @@ +''' +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