AVL Tree
An AVL tree is a self-balancing binary search tree in which the heights of the left and right subtrees of every node differ by at most one.
READY
Insert values to watch the tree rebalance. Each node shows its balance factor — left height minus right height — which an AVL tree keeps within ±1.
Value
Intuition
A self-balancing Binary Search Tree (BST) named after its inventors Adelson-Velsky and Landis. It maintains O(log n) height by automatically performing rotations during insertion and deletion if the tree becomes unbalanced.
Concept
In a normal BST, skewed data (like 1, 2, 3, 4...) can degrade performance to O(n). AVL Trees fix this by tracking a Balance Factor (Left Height - Right Height) for every node. If |BF| > 1, it rotates to restore balance.
How it Works
- Balance Factor (BF): Height(Left) - Height(Right).
- Valid BF: -1, 0, 1.
- Rotations: Operations to fix imbalance:
- LL Cases: Right Rotation.
- RR Cases: Left Rotation.
- LR Cases: Left then Right Rotation.
- RL Cases: Right then Left Rotation.
Step-by-Step Breakdown
- Insert node like standard BST.
- Backtrack up to root, updating heights.
- Check Balance Factor of each node.
- If Node becomes unbalanced (|BF| > 1):
- Left-Left (LL): Perform Right Rotation.
- Right-Right (RR): Perform Left Rotation.
- Left-Right (LR): Left Rotate left child, then Right Rotate current.
- Right-Left (RL): Right Rotate right child, then Left Rotate current.
When to Use
- Database indexing where lookups must be fast O(log n).
- Symbol tables in compilers.
- When search operations are more frequent than insertions/deletions.
When NOT to Use
- When insertions/deletions are very frequent (Red-Black trees might be slightly better due to fewer rotations).
- Simple scenarios where O(n) worst case is acceptable.
How to Identify
Key requirements: "Balanced BST", "Guaranteed O(log n) search", "Rotations".
Applying for software engineering roles? Free, no sign-up:
