Try this exercise. Fill in the missing part by typing it in.
To compute the prefix sum using a Fenwick Tree, we need to find the sum of all the elements in the original array up to a given index.
Let's say we want to calculate the prefix sum up to index i. We can do this by traversing the Fenwick Tree from index i to 0 and adding the values at each index to the sum. This is called the 'prefix sum query'. The resulting sum will be the prefix sum up to index i.
TEXT/X-C++SRC
1int prefixSumQuery(int BIT[], int i) {
2 int sum = 0;
3 while (i > 0) {
4 sum += BIT[i];
5 i -= i & (-i);
6 }
7 return sum;
8}
Here's an example of how to compute the prefix sum using a Fenwick Tree:
TEXT/X-C++SRC
1#include <iostream>
2using namespace std;
3
4const int n = 10;
5int arr[n + 1] = {0};
6int BIT[n + 1] = {0};
7
8// Compute the prefix sum up to index i
9int prefixSumQuery(int BIT[], int i) {
10 int sum = 0;
11 while (i > 0) {
12 sum += BIT[i];
13 i -= i & (-i);
14 }
15 return sum;
16}
17
18int main() {
19 // Computing prefix sum up to index 5
20 int index = 5;
21 int prefixSum = prefixSumQuery(BIT, index);
22 cout << "Prefix Sum up to index " << index << ": " << prefixSum << endl;
23
24 return 0;
25}
Write the missing line below.