Skip to content

Commit

Permalink
Add Fenwick Tree
Browse files Browse the repository at this point in the history
Add Fenwick Tree (Binary Index Tree)
  • Loading branch information
Sarot Busala authored Oct 20, 2017
1 parent 535cbb7 commit d68d0ef
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions data_structures/Binary Tree/FenwickTree.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
class FenwickTree:

def __init__(self, SIZE): # create fenwick tree with size SIZE
self.Size = SIZE
self.ft = [0 for i in range (0,SIZE)]

def update(self, i, val): # update data (adding) in index i in O(lg N)
while (i < self.Size):
self.ft[i] += val
i += i & (-i)

def query(self, i): # query cumulative data from index 0 to i in O(lg N)
ret = 0
while (i > 0):
ret += self.ft[i]
i -= i & (-i)
return ret

if __name__ == '__main__':
f = FenwickTree(100)
f.update(1,20)
f.update(4,4)
print (f.query(1))
print (f.query(3))
print (f.query(4))
f.update(2,-5)
print (f.query(1))
print (f.query(3))

0 comments on commit d68d0ef

Please sign in to comment.