class FenwickTree: def __init__(self, arr): self.n = len(arr) self.BITTree = [0] * (self.n + 1) for i in range(self.n): self.update(i, arr[i]) def get_sum(self, i): s = 0 i = i + 1 while i > 0: s += self.BITTree[i] i -= i & (-i) return s def update(self, i, v): i += 1 while i <= self.n: self.BITTree[i] += v i += i & (-i) # Driver code to test the FenwickTree class freq = [2, 1, 1, 3, 2, 3, 4, 5, 6, 7, 8, 9] fenwick_tree = FenwickTree(freq) print("Sum of elements in arr[0..5] is " + str(fenwick_tree.get_sum(5))) freq[3] += 6 fenwick_tree.update(3, 6) print("Sum of elements in arr[0..5] after update is " + str(fenwick_tree.get_sum(5)))
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter