Binary Tree in Python


A binary tree is a tree data structure in which each node has at most two children, which are referred to as the lest child node and the right child node.

Binary tree - Wikipedia

Code:

class node:
def __init__(self,x):
self.data = x
self.llink = None
self.rlink = None
def get_llink(self):
return self.llink
def get_rlink(self):
return self.rlink
def set_llink(self,x):
self.llink = x
def set_rlink(self,x):
self.rlink = x
def get_data(self):
return self.data
class binary_tree:
def __init__(self):
self.head = None
def set_head(self, x):
self.head = x
def get_head(self):
return self.head
def delete_head(self):
del self.head
print("Tree has been deleted.")
def set_node(self, x):
value = int(input("Enter the value that you want to insert
                            (-99 for no child): "))
if(value != -99):
x = node(value)
print(f"Enter the left child of {x.get_data()}")
x.set_llink(self.set_node(x.get_llink()))
print(f"Enter the right child of {x.get_data()}")
x.set_rlink(self.set_node(x.get_rlink()))
return x
return None
def inorder(self, x):
if(x != None):
self.inorder(x.get_llink())
print(x.get_data(), end=' ')
self.inorder(x.get_rlink())
def preorder(self, x):
if(x != None):
print(x.get_data(), end=' ')
self.preorder(x.get_llink())
self.preorder(x.get_rlink())
def postorder(self,x):
if(x != None):
self.postorder(x.get_llink())
self.postorder(x.get_rlink())
print(x.get_data(), end=' ')
if __name__ == "__main__":
obj1 = binary_tree()
ptr = node(None)
obj1.set_head(obj1.set_node(ptr))
if(obj1.get_head != None):
print("Inorder Traversal is: ")
obj1.inorder(obj1.get_head())
print("\nPreorder Traversal is: ")
obj1.preorder(obj1.get_head())
print("\nPostorder Traversal is: ")
obj1.postorder(obj1.get_head())
print("\n")
else:
print("Tree is Empty!")

Comments