Iterative insertion into a binary search tree
In the previous article Binary Search Tree , we discussed the recursive method to insert a node in BST. In this article, we will discuss the iterative method to insert a node in BST. It is better than the recursive method because the iterative insertion algorithm does not require additional space.
Binary Search Tree Iterative Insertion Algorithm
Assume root
that is the root node of BST and key
is the element we want to insert.
-
Create the node to be inserted -
toinsert
. -
Initialize two pointers, ,
curr
to point toroot
, and ,prev
to point to null. (curr
Traverse the tree,prev
keeping track of it). -
When
curr
!=NULL
, do the following.-
Updated
prev
tocurr
keep track of it. -
If
curr->data
>key
, setcurr
tocurr->left
, discarding the right subtree. -
If
curr->data
<key
, setcurr
tocurr->right
, discarding the left subtree.
-
Updated
-
If
prev
==NULL
, the tree is empty. Createroot
a node. -
Otherwise if
prev->data
>key
, thenprev
inserttoinsert
= toprev->left
the left oftoinsert
. -
Otherwise if
prev->data
<key
, thenprev
insert = on the righttoinsert
sideprev->right
oftoinsert
.
BST Iterative Insertion Diagram
-
First, we
root
initialize the BST by creating a node and insert it into it5
. -
3
is smaller than5
, so it is inserted5
to the left of . -
4
is smaller than5
, but3
larger than , so insert3
to the right of , but insert4
to the left of . -
2
is the smallest element in the current tree, so it is inserted at the leftmost position. -
1
is the smallest element in the current tree, so it is inserted at the leftmost position. -
6
is the largest element in the current tree, so it is inserted at the rightmost position.
This is how we insert elements inside a BST.
Iterative implementation of binary search tree insertion
#include <iostream>
using namespace std;
class Node {
public:
int key;
Node *left, *right;
};
Node *newNode(int item) {
Node *temp = new Node;
temp->key = item;
temp->left = temp->right = NULL;
return temp;
}
void inorder(Node *root) {
if (root != NULL) {
inorder(root->left);
cout << root->key << " ";
inorder(root->right);
}
}
void insert(Node* &root, int key)
{
Node* toinsert = newNode(key);
Node* curr = root;
Node* prev = NULL;
while (curr != NULL) {
prev = curr;
if (key < curr->key)
curr = curr->left;
else
curr = curr->right;
}
if (prev == NULL) {
prev = toinsert;
root = prev;
}
else if (key < prev->key)
prev->left = toinsert;
else
prev->right = toinsert;
}
int main() {
Node *root = NULL;
insert(root, 5);
insert(root, 3);
insert(root, 8);
insert(root, 6);
insert(root, 4);
insert(root, 2);
insert(root, 1);
insert(root, 7);
inorder(root);
}
Complexity of iterative insertion algorithm for binary search tree
Time Complexity
- Average situation
On average, the time complexity of inserting a node in a BST is comparable to the height of the binary search tree. On average, the height of a BST is O(logn)
. This happens when the formed BST is a balanced BST. Therefore, the time complexity is [Big Theta]: O(logn)
.
- Best Case
In the best case, the tree is a balanced BST. The time complexity of insertion in the best case is O(logn)
. It is the same as the time complexity in the average case.
- Worst case scenario
In the worst case, we may have to traverse from the root node to the deepest leaf node, which is the entire height of the tree h
. If the tree is unbalanced, that is, it is skewed, the height of the tree may become n
, so the worst-case time complexity of insertion and search operations is O(n)
.
Space complexity
The space complexity of the iterative insertion operation is O(1)
, since no additional space is required.
For reprinting, please send an email to 1244347461@qq.com for approval. After obtaining the author's consent, kindly include the source as a link.
Related Articles
Learning the Sorting Algorithm - Insertion Sort (Concepts)
Publish Date:2025/03/19 Views:96 Category:ALGORITHM
-
What is "insertion sort"? The concept is as follows: each time a record to be sorted is inserted into the previously sorted sequence according to its key size, until all records are inserted. Concepts are always somewhat abstract, and can a
Learning path of sorting algorithm - direct insertion sort
Publish Date:2025/03/19 Views:176 Category:ALGORITHM
-
This article follows up on Insertion Sort (Concepts) and presents the implementation steps and code for direct insertion sort. Since the Concepts section already has a large number of illustrations, it would be a bit long-winded to provide
Learning the sorting algorithm - Binary Insertion Sort
Publish Date:2025/03/19 Views:143 Category:ALGORITHM
-
This article follows the insertion sort (concept article) and presents the implementation steps and implementation code of the binary insertion sort Binary Insertion Sort Algorithm Steps Treat the first element of the first sequence to be s
The road to learning sorting algorithms - table insertion sort
Publish Date:2025/03/19 Views:194 Category:ALGORITHM
-
Table insertion sort was briefly mentioned in Insertion sort (concept) . I briefly summarized it and wrote this article. You can refer to it if you need it. Table insertion sort, as the name implies, uses an index table to sort the original
The road to learning sorting algorithms - Hill sort
Publish Date:2025/03/19 Views:52 Category:ALGORITHM
-
Hill sort is named after the designer of the algorithm, Hill. It is an improvement of Hill on the basis of insertion sort and can be said to be a special insertion sort. Here are the properties of insertion sort: First of all, the insertion
Things about the singleton design pattern
Publish Date:2025/03/19 Views:53 Category:ALGORITHM
-
The singleton design pattern is one of the most commonly used design patterns. The singleton design pattern, just by its name, you can roughly know its meaning. Single means one; instance means instance object. So a singleton has only one i
The road to learning sorting algorithms - merge sort
Publish Date:2025/03/19 Views:158 Category:ALGORITHM
-
Let's first look at the definition of merge sort Merge sort is an effective sorting algorithm based on the merge operation. This algorithm is a very typical application of the Divide and Conquer method. Merge the ordered subsequences to obt
The road to learning sorting algorithms - merge sort (non-recursive implementatio
Publish Date:2025/03/19 Views:189 Category:ALGORITHM
-
In the article "Merge Sort", we introduced the principles and operation steps of merge sort, and finally implemented the sorting algorithm using PHP code. In the program, we used the principle of recursion to implement the algorithm. In fac
The road to learning sorting algorithms - quick sort
Publish Date:2025/03/19 Views:122 Category:ALGORITHM
-
Quick sort is a sorting algorithm developed by Tony Hall. On average, sorting n items requires O(n log n) comparisons. In the worst case, O(n2) comparisons are required, but this is uncommon. In fact, quick sort is often significantly faste