mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-08 18:32:56 +08:00
Add Fenwick Tree (#2570)
This commit is contained in:

committed by
GitHub

parent
68d6a9419b
commit
4a2b190160
34
DataStructures/Trees/FenwickTree.java
Normal file
34
DataStructures/Trees/FenwickTree.java
Normal file
@ -0,0 +1,34 @@
|
||||
package DataStructures.Trees;
|
||||
|
||||
public class FenwickTree {
|
||||
private int n;
|
||||
private int fen_t[];
|
||||
|
||||
/* Constructor which takes the size of the array as a parameter */
|
||||
public FenwickTree(int n) {
|
||||
this.n = n;
|
||||
this.fen_t = new int[n + 1];
|
||||
}
|
||||
|
||||
/* A function which will add the element val at index i*/
|
||||
public void update(int i, int val) {
|
||||
// As index starts from 0, increment the index by 1
|
||||
i += 1;
|
||||
while (i <= n) {
|
||||
fen_t[i] += val;
|
||||
i += i & (-i);
|
||||
}
|
||||
}
|
||||
|
||||
/* A function which will return the cumulative sum from index 1 to index i*/
|
||||
public int query(int i) {
|
||||
// As index starts from 0, increment the index by 1
|
||||
i += 1;
|
||||
int cumSum = 0;
|
||||
while (i > 0) {
|
||||
cumSum += fen_t[i];
|
||||
i -= i & (-i);
|
||||
}
|
||||
return cumSum;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user