File size: 2,301 Bytes
8a2dcce
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
TOPIC: Fenwick Tree (Binary Indexed Tree)

DEFINITION: 
A Fenwick Tree, also known as a Binary Indexed Tree, is a data structure used to efficiently calculate prefix sums and update elements in an array. It solves the problem of quickly computing cumulative sums and making range updates by using a tree-like structure to store the cumulative sums.

TIME_COMPLEXITY: 
The time complexity of a Fenwick Tree is O(log n) for both update and query operations, where n is the number of elements in the array, because each operation involves traversing a path in the tree that is at most log n levels deep.

SPACE_COMPLEXITY: 
The space complexity of a Fenwick Tree is O(n), as it requires an array of size n to store the tree nodes, with each node representing a cumulative sum.

USE_WHEN: 
Use a Fenwick Tree when you need to frequently calculate prefix sums or make range updates in an array, such as in scenarios involving dynamic cumulative sum calculations or updates to a large dataset. This data structure is particularly useful when the array is too large to fit into memory or when updates and queries need to be performed quickly.

AVOID_WHEN: 
Avoid using a Fenwick Tree when the array is relatively small or when random access to individual elements is necessary, as the overhead of the tree structure may outweigh its benefits; in such cases, a simple array or a hash table may be a better choice.

EXAMPLE: 
Suppose we have an array [3, 2, -1, 6, 5] and we want to calculate the prefix sum up to the 4th index using a Fenwick Tree:
  Initial array: [3, 2, -1, 6, 5]
  Initialize tree: [3, 5, 4, 10, 15]
  To calculate prefix sum up to 4th index:
    Start at index 4 (value 15)
    Subtract value at index 3 (value 10): 15 - 10 = 5
    Add value at index 2 (value 4): 5 + 4 = 9
    Subtract value at index 1 (value 5): 9 - 5 = 4
    Add value at index 0 (value 3): 4 + 3 = 7 
    Result: 
    Checkmark: The prefix sum up to the 4th index is 15.

REAL_WORLD_ANALOGY: 
A Fenwick Tree can be thought of as a hierarchical accounting system, where each node in the tree represents a cumulative sum of a subset of accounts, allowing for efficient calculation of totals and updates to individual accounts.

SOURCE_NOTE: 
Concepts referenced from general knowledge of data structures and algorithms.