Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class TnaryTreeNode:
- def __init__(self, data):
- self.children = [None, None, None]
- self.data = data
- class TnaryTree:
- def __init__(self, data):
- self.root = TnaryTreeNode(data)
- def tnary_tree_node_add_child(parent, child):
- for i in range(3):
- if parent.children[i] is None:
- parent.children[i] = child
- return child
- return None
- def tnary_tree_serialize(fp, tree):
- for i in range(3):
- if tree.root.children[i] is not None:
- fp.write(tree.root.children[i].data)
- def tnary_tree_deserialize(fp):
- data = fp.read(2)
- return data
- def tnary_tree_print(node, level):
- if node is None:
- return
- for i in range(level):
- print("| ", end="")
- print(node.data)
- for child in node.children:
- tnary_tree_print(child, level + 1)
- class MapNode:
- def __init__(self, data):
- self.data = data
- self.next = None
- class Map:
- def __init__(self):
- self.key = None
- self.count = 0
- self.value = [None] * 128
- def map_hash(string):
- hash_val = 5381
- for char in string:
- hash_val = ((hash_val << 5) + hash_val) + ord(char)
- return hash_val % 128
- def map_set(map, key, new_node):
- hash_val = map_hash(key)
- node = map.value[hash_val]
- if node is None:
- map.value[hash_val] = new_node
- map.count += 1
- return True
- while node.next is not None:
- node = node.next
- node.next = new_node
- map.count += 1
- return True
- def map_get(map, key):
- hash_val = map_hash(key)
- node = map.value[hash_val]
- while node is not None:
- if node.data == key:
- return node
- node = node.next
- return None
- def map_clear(map):
- for i in range(128):
- node = map.value[i]
- while node is not None:
- temp = node
- node = node.next
- del temp
- del map
- if __name__ == "__main__":
- tree_node = TnaryTree("a")
- node = TnaryTree("b")
- tnary_tree_node_add_child(tree_node.root, node.root)
- node = TnaryTree("c")
- tnary_tree_node_add_child(tree_node.root, node.root)
- node = TnaryTree("d")
- tnary_tree_node_add_child(tree_node.root, node.root)
- with open("test.txt", "w") as fp:
- tnary_tree_serialize(fp, tree_node)
- with open("test.txt", "r") as fp:
- data = tnary_tree_deserialize(fp)
- print("Deserialized data:", data)
- map_obj = Map()
- # Set data of tree_node root to contain characters within the node and add it to the Map
- new_node_a = MapNode("a")
- new_node_b = MapNode("b")
- new_node_c = MapNode("c")
- new_node_d = MapNode("d")
- map_set(map_obj, "fn", new_node_a) # Function keyword
- new_node_a.next = new_node_b
- map_set(map_obj, "b", new_node_b)
- new_node_b.next = new_node_c
- map_set(map_obj, "c", new_node_c)
- new_node_c.next = new_node_d
- map_set(map_obj, "d", new_node_d)
- # Retrieving and printing data from the map
- print("Data in the map:")
- map_node = map_get(map_obj, "fn")
- print(map_node)
- for item in map_obj.value:
- if item is not None:
- print(item.data)
- # Freeing memory
- map_clear(map_obj)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement