×

2-3 Trees and Basic Operations on them

2-3 Trees, like any other AVL trees or B-trees, are just a type of Height Balanced Tree. 2-3 Trees are the B-trees of order 3. Like every other B-tree, the leaf nodes of such trees are always at the same depth; hence, the height needs to be consistently adjusted on each update, either insertion or deletion.

The time complexity of various operations like Search, Insert, or deletion is O(logN).

Properties of 2-3 trees

The nodes of a 2-3 tree are classified into three categories. One type of node, also called the 2-node, has only one value and two sub-nodes. At the same time, the 3-node(s) have two data items and three sub-nodes. The third type of node is the leaf node. The data items stored in a 2-3 tree are always sorted, and each node in such trees can only be of one type of these three. The insertions in 2-3 trees are done through the leaf nodes only, and the height is adjusted accordingly.

The primary operations performed on a 2-3 tree are as follows:

  1. Searching
  2. Insertion
  3. Deletion

Let us try to understand each of them one by one:

Searching

In order to find any specific target value from a 3-order B-tree, you can use this recursive algorithm that returns either TRUE if the value is present or FALSE if the data item specified is not present in the tree in O(logN) time. Let us represent our 2-3 tree as Tr and try to search a value, say target.

The base case for the algorithm would be:

  1. If the tree is empty, Return FALSE (the empty tree cannot contain any value).
  2. If you reach the leaf node and still do not find the target, return FALSE.
  3. If you find the target at the current node, return TRUE.

Instructions that are called recursively:

As we know that the Tr is already a sorted tree, we use the binary search approach.

1. In case that target>Node.leftInfo, recursively call search for the left subtree of the node you are currently checking.

2. And if the target>Node.rightInfo, we search the target in the right subtree of the node we checked.

3. Otherwise, if the target is larger than the node.leftInfo but smaller than the Node.rightInfo, then explore the middle subtree.

2-3 Trees and Basic Operations on them
2-3 Trees and Basic Operations on them
2-3 Trees and Basic Operations on them
2-3 Trees and Basic Operations on them

Insertion

While inserting your data in a 2-3 tree, you can find three possible cases. These cases are explained here briefly. As insertion is done only at the leaf nodes in a tree, the potential instances you are likely to encounter are:

Case 1: The leaf node has only one data item. The insertion is pretty simple in this case, as you can directly insert the value at that node itself.

2-3 Trees and Basic Operations on them

Case 2: Leaf nodes have two data items, but the parent contains only one data item. In such a case, the leaf node is temporarily converted into a 3-item node with three data items. Then the middle element is moved to the parent node to split the current node, eliminating any three-item nodes from the tree.

2-3 Trees and Basic Operations on them
2-3 Trees and Basic Operations on them

Case 3: Leaf nodes have two data elements as well as their parent node. In such cases, the process of case 2 is repeated until no 3 item nodes are left in the hierarchy, hence automatically adjusting the height of your tree.

2-3 Trees and Basic Operations on them
2-3 Trees and Basic Operations on them
2-3 Trees and Basic Operations on them
2-3 Trees and Basic Operations on them

Deletion

While deleting any node from the 2-3 tree (3 order B-tree), the value to be deleted is simply replaced by the next value from the in-order traversal of the 2-3 tree.

If the node is left empty after the deletion of the value, it is merged with the adjacent node. Using examples can help us better understand the omission of values from a 2-3 tree. Let us look at the following tree and delete the two values, 54 and 79.

To delete the data item with value 54, first exchange its value with its successor in in-order traversal, which would be 79. Now the data item to be deleted is present in the leaf node, and hence easily remove the data item.

Now to delete the next item, 79, from the tree, exchange it with its successor to bring it to the leaf node and hence delete it from the tree.

But here, after removing the data item 79 from the tree, the node left behind is empty, and as we know that a 2-3 tree can never have any empty node, hence bring down the lowest data element from the parent node and merge it with its left adjacent node.

In the given 2-3 tree below, delete the values: 69, 72, 99, 81 from it.

2-3 Trees and Basic Operations on them
2-3 Trees and Basic Operations on them

After deletion of Node item 69.

2-3 Trees and Basic Operations on them
2-3 Trees and Basic Operations on them
2-3 Trees and Basic Operations on them
2-3 Trees and Basic Operations on them

Related Topics

Treap data structure

In this article, we will discuss the treap data structure. The word treap is a combination of 'tree' and 'heap'. So, treap data structure is a combination of a heap...

8 minutes read.

Top view of binary tree

We know that a binary tree is a kind of tree that helps us organize our tree and that it is a kind of non-linear info structure that at least...

4 minutes read.

Graph Data Structure

A graph is a non-primitive and non-linear data structure. It is a group of (V, E) where V is a set of vertexes, and E is a set of edge....

3 minutes read.

Collision Resolution Techniques

Collision Resolution Techniques Collision in hashing In this, the hash function is used to compute the index of the array.The hash value is used to store the key in the hash table,...

2 minutes read.

Count pairs from two linked lists whose sum is equal to a given value

Count pairs from two linked lists whose sum is equal to a given value In this problem, we have given two linked lists of size n1 and n2 with distinct elements...

4 minutes read.

Dijkstra’s vs Bellman-Ford Algorithm

The Dijkstra Algorithm One of the SSSP (Single Source Shortest Path) algorithms is Dijkstra's. As a result, it finds the shortest path between a source node and all other nodes in...

7 minutes read.

Linear vs Binary Search: Data Structure

Difference Between Linear and Binary Search What is Linear Search? A linear search also referred as a sequential search. It is a way to find an element within a list and it...

3 minutes read.

Stack Using Linked List

In the linked list implementation of the stack, we use a linked list as the primitive data structure to create the stack. It is called the dynamic implementation of the...

6 minutes read.

All About Minimum Cost Spanning Trees in Data Structure

Data management is called database management. This allows the computer to sort or organize the data for efficient retrieval. A data model is a system that stores, manages, and optimizes...

7 minutes read.

Bitwise Operators and their Important Tricks

In most of the programs you write today, you deal with data types comprising bytes, such as integer, float, double, etc. Dealing with bytes? It is a quite normal task,...

5 minutes read.

Digital Search Tree in Data Structures

What is a digital search Tree in Data Structures? The Digital search tree is known for its application and diversity in the way it has impacted our world in the field...

3 minutes read.

Splay Tree

Splay Tree A splay tree is a self-balanced or self-adjusted binary search tree. We can say, Splay Tree is used in some cases where some elements or data are accessed more...

8 minutes read.

Inorder Successor in Binary Trees

The next node in the Inorder traversal of a binary tree is known as Inorder successor of that particular node. In a Binary Search Tree, the definition of Inorder successor can...

9 minutes read.

Finding the Sum of All Paths in a Binary Tree

Implementation // Writing the C++ program to implement the below approach.  #include <bits/stdc++.h> using namespace std; // creating the new tree node structure. struct Tree__nod { int val; Tree__nod *Lft, *Rt; }; // creating a new function that will...

8 minutes read.

Stack vs Array

Difference between Array and Stack In this article, we are going to discuss the major differences between the stack and array data structures: Array – In the data structure, the array is...

3 minutes read.

Delete a Node without head pointer from the linked list

Delete a Node without head pointer from the linked list This article will explain how to delete a node without a head pointer from the linked list. We have given a...

2 minutes read.

Deletion in Binary Search Tree

Implementation #include <iostream> using namespace std; struct _nod {   int ky;   struct _nod *Lft, *Rt; }; // Creating a node in the binary tree. struct _nod *nw_nod(int Itm) {   struct _nod *temp = (struct _nod *)malloc(sizeof(struct...

4 minutes read.

Remove duplicates from an unsorted Linked List

Remove duplicates from an unsorted Linked List This article will explain how we can remove duplicates from unsorted linked lists. Here we have given an unsorted singly linked list and will...

3 minutes read.

What is an AVL Tree in Data Structure?

AVL tree stands for (Adelson, Velskii, & Landis Tree) Data structure Data management is called database management. A data model is a system used to store, manage, and optimize computer resources. Data...

4 minutes read.

Array vs Linked List: Data Structure

Data structure: Difference Between Array and Linked List What is Array? An array is a linear data structure that can store similar data items for further processing. The similar data items...

3 minutes read.