Mark As Completed Discussion

Updating a Fenwick Tree

In this lesson, we will focus on updating values in a Fenwick Tree. To update a value in a Fenwick Tree, we modify the element at the given index and then update the relevant cumulative sums.

Let's take a look at the code snippet below to see how we can update a value in a Fenwick Tree using C++:

TEXT/X-C++SRC
1#include <iostream>
2using namespace std;
3
4int main() {
5  // Replace with your Fenwick Tree implementation
6  int n;
7  cin >> n;
8
9  // Create an array to store the Fenwick Tree
10  int fenwick[n + 1];
11  for (int i = 0; i <= n; i++) {
12    fenwick[i] = 0;
13  }
14
15  // Update a value in the Fenwick Tree
16  int idx, val;
17  cin >> idx >> val;
18  while (idx <= n) {
19    fenwick[idx] += val;
20    idx += idx & -idx;
21  }
22
23  // Output the updated Fenwick Tree
24  for (int i = 1; i <= n; i++) {
25    cout << fenwick[i] << " ";
26  }
27
28  return 0;
29}

In the code snippet, we first create an array to store the Fenwick Tree and initialize all elements to 0. Then, we update a value in the Fenwick Tree by adding the given value to the element at the specified index. We also update the cumulative sums accordingly using bitwise operations.

Finally, we output the updated Fenwick Tree to verify the results.

Keep in mind that this code snippet serves as an example implementation, and you may need to modify it based on your specific use case.

CPP
OUTPUT
:001 > Cmd/Ctrl-Enter to run, Cmd/Ctrl-/ to comment