Binary Search Tree
Rebalancing Trees
Data Structures
Algorithms
Tree Balancing

Rebalancing an arbitrary BST?

Data Structures & Algorithms practice on Codemia

Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.

Practice algorithms

Rebalancing an arbitrary Binary Search Tree (BST) is a crucial operation that optimizes the tree's structure for efficient operations such as search, insertion, and deletion. An unbalanced BST can deteriorate to a structure with a complexity similar to a linked list, i.e., O(n) for operations. Rebalancing helps maintain a tree's height to the minimum possible, ideally O(log n), thus preserving the desirable logarithmic time complexity.

Technical Explanation

Structure and Imbalance

A Binary Search Tree (BST) is composed of nodes, each containing a key, where the keys in the left subtree are less than the node’s key, and the keys in the right subtree are greater. An imbalance occurs when the difference in depths between left and right subtrees exceeds a threshold, typically one for AVL trees or more for other balanced tree variations.

Balancing Techniques

Rotations

Tree rotations are fundamental operations used during rebalancing. A rotation pivots nodes around edges, preserving the BST property while redistributing subtree heights.

  • Right Rotation: A right rotation on node `x` makes `x`'s left child `y` as `x`'s parent, adjusting their corresponding children accordingly.
    • Before: `x` is the root of its subtree with left child `y`.
    • After: `y` becomes the root, and `x` becomes `y`'s right child.
  • Left Rotation: Symmetric to the right rotation, applied when a node's right subtree is taller.

Self-Balancing Trees

Several self-balancing BSTs like AVL trees or Red-Black trees integrate these rotations during insertion and deletion:

  • AVL Trees: Every node maintains a balance factor (height difference between the left and right subtrees) and performs rotations to adjust it within the -1 to 1 range.
  • Red-Black Trees: These use a color-coding strategy, along with rotations and recoloring, to ensure the longest path is not more than twice the shortest.

Example of Rebalancing

Consider an AVL tree with the sequence of insertions leading to an imbalance:

  1. Insert keys: 10, 20, 30.
  2. Structure after insertion:
  • Time Complexity: Rotation operations are O(1), while the overall cost of maintaining balance is generally O(log n) for each insertion/deletion in AVL or Red-Black trees.
  • Space Complexity: This generally depends on augmenting node structures with additional fields (e.g., balance factors in AVL).

Related reading
Course
Intermediate
27 lessons
15 hours
DSA Fundamentals

Master algorithmic patterns and data structures through hands-on LeetCode-style problems - from arrays and hashing to dynamic programming and advanced graphs.

View the course
Track what you have practised

A free account saves your progress, solutions and study plan across every problem on Codemia.

Data Structures & Algorithms practice on Codemia

Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.

Practice algorithms

All Rights Reserved.