# Binary Search Tree

## Binary Search Tree

A Binary Search Tree (BST) is a binary tree data structure where each node has a key and satisfies the following properties:

The key in each node is greater than all keys in its left subtree.

The key in each node is less than all keys in its right subtree.

The left and right subtrees of a node are also binary search trees.

This ordering property allows for efficient searching, insertion, and deletion operations.

Here are some key features and properties of Binary Search Trees:

In a BST, the left child of a node contains keys smaller than the node's key, and the right child contains keys greater than the node's key.

The order of elements in a BST is determined by the comparison of keys, and it allows for efficient searching. On average, the time complexity for searching, insertion, and deletion operations in a BST is O(log n), where n is the number of nodes.

BSTs can be used to implement various operations such as finding the minimum and maximum values, checking if a key exists, finding the successor or predecessor of a key, and performing range queries.

If the keys in a BST are inserted in a sorted order, it can lead to a degenerate tree with only right or left subtrees, which results in poor performance. To maintain a balanced BST, various balanced tree variants like AVL trees, Red-Black trees, or B-trees are used.

In-order traversal of a BST visits the nodes in ascending order of their keys, which makes it useful for obtaining the sorted order of elements in the tree.

Overall, Binary Search Trees provide an efficient and flexible data structure for storing and manipulating ordered data, enabling efficient search and other operations.

## Basic Operations

Binary Search Trees (BSTs) support various operations for inserting, searching, and deleting nodes, as well as other common operations. Here are the main operations performed on a Binary Search Tree:

Insertion in Binary Search Tree - click here

Deletion in Binary Search Tree - click here

Searching in Binary Search Tree - click here

Binary Search Tree (BST) Traversals – Inorder, Preorder, Post Order - click here

Convert a normal BST to Balanced BST - click here