public void BinaryIndexTreeTest() { var random = new Random(); for (int i = 1; i <= 64; i++) { var binaryIndexTree = new BinaryIndexTree <int>(i); var nums = new int[i + 1]; for (int j = 1; j <= i; j++) { var num = random.Next(i); nums[j] = num; binaryIndexTree.AddTo(j, num); } for (int j = 1; j <= i; j++) { Assert.Equal(nums[j], binaryIndexTree.Get(j)); var sum = 0; for (int k = j; k <= i; k++) { sum += nums[k]; Assert.Equal(sum, binaryIndexTree.GetRangeSum(j, k)); } } } }
static void Main() {/* * BinarySearchTree<int> tree = new(); * tree.Insert(3); * tree.Insert(1); * tree.InsertMany(new List<int> {6, 2, 4}); * Print(tree);*/ int[] array = { 2, 1, 1, 3, 2, 3, 4, 5, 6, 7, 8, 9 }; int n = array.Length; BinaryIndexTree tree = new BinaryIndexTree(100); tree.ConstructTree(array, n); Console.WriteLine("Sum of elements in arr[0..5]" + " is " + tree.GetSum(5)); array[3] += 6; tree.UpdateTree(n, 3, 6); Console.WriteLine("Sum of elements in arr[0..5]" + " after update is " + tree.GetSum(5)); }