Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Added some more functions to BinarySearchTree.
-> Defining intial elements of newly created Trees
-> Prettyprinting trees with left-right order and * representing null nodes.
  • Loading branch information
hanif-ali committed Nov 9, 2019
commit 2e9300f7e74048403b9513503c5615c721d0aa3a
23 changes: 22 additions & 1 deletion Programs/P43_BinarySearchTree.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,13 @@ def postorder(self):
print(str(self.data), end = ' ')

class Tree(object):
def __init__(self):
def __init__(self, initial_data = []):
self.root = None

# If provided, add initial data
for data in initial_data:
self.insert(data)

def insert(self, data):
if self.root:
return self.root.insert(data)
Expand Down Expand Up @@ -106,6 +110,22 @@ def postorder(self):
print('Postorder: ')
self.root.postorder()


def pprint(self, head_node=0, _pre="", _last=True, term=False):

head_node = self.root if head_node is 0 else head_node

data = "*" if head_node is None else head_node.data

print(_pre, "`- " if _last else "|- ", data, sep="")
_pre += " " if _last else "| "

if term: return

for i, child in enumerate([head_node.leftChild, head_node.rightChild]):
self.pprint(child, _pre, bool(i) ,term=not(bool(child)))


if __name__ == '__main__':
tree = Tree()
tree.insert(10)
Expand All @@ -117,6 +137,7 @@ def postorder(self):
tree.insert(7)
tree.insert(15)
tree.insert(13)
tree.pprint()
print(tree.find(1))
print(tree.find(12))
tree.preorder()
Expand Down