BST Explained
What is a Binary Search Tree?
Binary Search Tree is a kind of tree in which each node follows specific properties to construct a tree.
Properties of Binary Search Tree
At every level, the left sub tree is smaller than its parent root key.
At every level, the right sub tree is larger than its parent root key.
It is called Binary Tree because it has at most 2 children at every parent node.
It is also called a sorted ordered binary tree or search tree. It is called search tree because the search or find operation for a key requires O(log(n)) time complexity.
Operations in Binary Search Tree
Insertion
Search
Traversal (Preorder, Inorder, Postorder)
Implementation of Binary Search Tree
Now, let’s start creating a Binary Search Tree. So for every key of the tree, we require a Node which consists of data, left child pointer, and then right child pointer.
Create Class Node
class Node(object):
def __init__(self, data):
self.data = data
self.leftChild = None
self.rightChild = None1. Insert Operation
Now after initializing a Node class, let’s create an Insert operation that will insert the key either to the left of the parent or the right of the parent.
2. Find Operation
After creating the Insert Operation, let’s create a find or Search operation which checks whether the specified data is in the tree or not.
3. Traversal
Now we have implemented Insertion and Search Operation for our Binary Search Tree.
Now we have to implement the traversal of the BST. So, there are 3 different types of Traversal in BST.
1. Preorder Traversal
Preorder Traversal is a kind of traversal in which first we print the parent root and then traverse to the left of the parent and after completing the whole left branch then proceed to the right of the parent root at every level.
2. Inorder Traversal
Inorder Traversal is similar to Preorder Traversal but the difference is first we go to the extreme left and then we print the parent and then we procees to the right of the parent at every level.
And Inorder Traversal always prints the BST in Sorted Order.
3. PostOrder Traversal
PostOrder Traversal is similar to other traversals but the difference is first we go the extreme left then we proceed to the right and then we print out the parent of the key at every level.
Now we have to implement Node Class, let’s implement the Tree Class which instantiates Node Class and its operations.
Create Tree Class
We first create a similar function that we have created in Node class to expose Tree Class functionalities to outside and not Node Class directly.
Print Complete Tree
Let’s add one more functionality to our class Tree which prints the whole tree in the console log output.
Implement Main Function
Now our BST is implemented perfectly in the above classes. Let’s create an object of Tree Class and then check its functionalities.
Code
Output
Last updated
Was this helpful?