# Binary Search Tree vs Avl Tree

Posted September 12, 2022 by Rohith and Anusha ‐ 3 min read

The binary search tree is a tree data structure that follows the condition of the binary tree. As we know, that tree can have 'n' number of children, whereas; the binary tree can contain the utmost two children. An AVL tree is a self-balancing binary search tree where the difference between heights of left and right subtrees cannot be more than one.

Differences between Binary Search Tree and AVL Tree

Binary Search treeAVL tree
Every binary search tree is a binary tree because both the trees contain the utmost two children.Every AVL tree is also a binary tree because AVL tree also has the utmost two children.
In BST, there is no term exists, such as balance factor.In the AVL tree, each node contains a balance factor, and the value of the balance factor must be either -1, 0, or 1.
Every Binary Search tree is not an AVL tree because BST could be either a balanced or an unbalanced tree.Every AVL tree is a binary search tree because the AVL tree follows the property of the BST.
Each node in the Binary Search tree consists of three fields, i.e., left subtree, node value, and the right subtree.Each node in the AVL tree consists of four fields, i.e., left subtree, node value, right subtree, and the balance factor.
In the case of Binary Search tree, if we want to insert any node in the tree then we compare the node value with the root value; if the value of node is greater than the root node value then the node is inserted to the right subtree otherwise the node is inserted to the left subtree. Once the node is inserted, there is no need of checking the height balance factor for the insertion to be completed.In the case of AVL tree, first, we will find the suitable place to insert the node. Once the node is inserted, we will calculate the balance factor of each node. If the balance factor of each node is satisfied, the insertion is completed. If the balance factor is greater than 1, then we need to perform some rotations to balance the tree.
In Binary Search tree, the height or depth of the tree is O(n) where n is the number of nodes in the Binary Search tree.In AVL tree, the height or depth of the tree is O(logn).
It is simple to implement as we have to follow the Binary Search properties to insert the node.It is complex to implement because in AVL tree, we have to first construct the AVL tree, and then we need to check height balance. If the height is imbalance then we need to perform some rotations to balance the tree.
BST is not a balanced tree because it does not follow the concept of the balance factor.AVL tree is a height balanced tree because it follows the concept of the balance factor.
Searching is inefficient in BST when there are large number of nodes available in the tree because the height is not balanced.Searching is efficient in AVL tree even when there are large number of nodes in the tree because the height is balanced.