Exemple #1
0
        static void SubtreeCheck()
        {
            var t1 = new RbTree <int>();

            t1.Add(3);
            t1.Add(2);
            t1.Add(4);
            t1.Add(1);
            t1.Add(5);
            t1.Add(0);
            t1.Add(-1);
            t1.Add(-2);
            RbTree <int> .Node subroot = t1.Add(-3);
            t1.Add(-4);
            t1.Add(-5);

            t1.Print();

            WriteLine(Environment.NewLine);

            var t2 = t1.Subtree(subroot);

            t2.Print();

            t1.Remove(-5);

            WriteLine(Environment.NewLine);

            t2.Print();
        }
Exemple #2
0
        static void GenerateTree()
        {
            WriteLine("Enter a size, start value, and end value, separated by spaces.");
            var s = ReadLine() !.Trim();
            var l = s.Split().Select(x => int.Parse(x)).ToList();

            var(size, from, to) = (l[0], l[1], l[2]);
            var tree        = new RbTree <int>();
            var rng         = RandomSingleton.GetInstance();
            var toInclusive = to + 1;

            watch.Start();
            for (int i = 0; i < size; ++i)
            {
                int j = rng.Next(from, toInclusive);
                tree.Add(j);
            }
            watch.Stop();

            WriteLine($"Added {size} elements in {watch.ElapsedMilliseconds} milliseconds.");
            WriteLine("Display tree? (Y/n)");
            if (ReadLine() !.Trim().ToLower() == "y")
            {
                tree.Print();
            }
            var list = tree.InOrderKeys();

            Shuffle(list);

            watch.Restart();
            foreach (var key in list)
            {
                tree.Remove(key);
            }
            watch.Stop();
            WriteLine($"Removed {size} elements in {watch.ElapsedMilliseconds} milliseconds.");
        }