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."); }