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));
                    }
                }
            }
        }
Beispiel #2
0
        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));
        }