A Binary Search Tree is a binary tree where each node contains a key and an optional associated value.
It allows particularly fast lookup, addition, and removal of items.
A new key in Binary Search Tree is always inserted at a leaf node. We start searching for the key to be inserted from the root until we hit a leaf node. Once the appropriate leaf node is found, the new node is added as a child of that leaf node.