Intermediate Topic 26 of 52 Data Structures
Fenwick Trees
Compact structure for prefix sums with point updates.
How it works
A Fenwick tree, also called a binary indexed tree, stores partial sums in a single array and uses the lowest set bit of an index, i & -i, to decide which range each cell covers and how to move between cells. Prefix-sum queries and point updates both take O(log n) time and only O(n) memory with very small constants.
Where it is used
Counting inversions, maintaining cumulative frequencies, order-statistic queries, rank computations in coordinate-compressed data and 2D variants for image sums use Fenwick trees. They are favored for their short code.
Common pitfall
Indexing is one-based, and using index zero loops forever. They directly support only invertible operations like sum, not min or max. Range updates need a pair of trees. Remember to initialize correctly with a linear-time build instead of n updates when n is large.
Where it fits in the course
Fenwick Trees is topic 26 of 52 in Data Structures, rated Intermediate. It follows Segment Trees. The next topic is Graphs.
Practice and explore
- Open the interactive lesson, with a mini quiz.
- Take the Data Structures quiz.
- Explore the Binary Search Tree visualizer: Insert keys and run traversals.
How to study this topic
- Read the explanation above and restate the definition in your own words.
- Open the interactive lesson and answer its mini quiz.
- Read the common pitfall, then write a short example that avoids it.
- Check your understanding in the Data Structures quiz, and revisit the topic if you miss a question.
Frequently asked questions
What is Fenwick Trees?
Where do people use Fenwick Trees?
What is the most common mistake with Fenwick Trees?
What should I learn before this topic?
How can I practice it?
Is Fenwick Trees hard to learn?
How long does it take to learn Fenwick Trees?
Which topics are related to Fenwick Trees?
What should I study after Fenwick Trees?
Related topics
- Segment Trees (Data Structures)
- Graphs (Data Structures)
- Tries (Data Structures)
- Adjacency List (Data Structures)
- Decision Trees (AI & Machine Learning)
- Trees in Graph Theory (Theory & Discrete Math)
- Abstract Syntax Trees (Languages & Compilers)