public void RandomBalanceTest_AssertAfterAllIterations()
        {
            var tree = new AvlTree <int>();
            var rnd  = new UniqRandom(new Random());

            for (var i = 0; i < 1_000_000; i++)
            {
                tree.Add(rnd.Next());
            }
            AssertBalanced(tree);
            AssertOrdered(tree);
        }
        public void RandomDeleteTest()
        {
            var allValues = new HashSet <int>();
            var rnd       = new UniqRandom(new Random());
            var tree      = new AvlTree <int>();

            for (var i = 0; i < 1000000; i++)
            {
                var val = rnd.Next();
                tree.Add(val);
                allValues.Add(val);
            }

            var removing = allValues.OrderBy(r => rnd.Next()).Take(100000).ToArray();

            foreach (var val in removing)
            {
                tree.Remove(val);
            }
            AssertBalanced(tree);
            AssertOrdered(tree);
        }