static void JoinExample() { 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); t1.Add(-3); t1.Add(-4); t1.Add(-5); var t2 = new RbTree <int>(); t2.Add(9); t2.Add(8); t2.Add(10); t2.Add(7); t2.Add(11); WriteLine($"Note: t1's black height > t2's black height in this example." + Environment.NewLine); var t3 = RbTree <int> .Join(t1, 6, t2); t3.Print(); }
public void TestT1LargerBh() { t1.Add(-3); t1.Add(-4); t1.Add(-5); TestContext.Progress.WriteLine($"t1 black height: {t1.Bh}, t2 black height: {t2.Bh}"); var t3 = Join(t1, 6, t2); Assert.AreEqual(true, t3.Validate()); }
public void TestInsert() { tree.Add(8); tree.Add(5); tree.Add(9); tree.Add(2); tree.Add(6); tree.Add(11); tree.Add(1); tree.Add(0); Assert.AreEqual(8, tree.Root.Key); Assert.AreEqual(Black, tree.Root.Color); Assert.AreEqual(5, tree.Root.Left.Key); Assert.AreEqual(Red, tree.Root.Left.Color); Assert.AreEqual(9, tree.Root.Right.Key); Assert.AreEqual(Black, tree.Root.Right.Color); Assert.AreEqual(1, tree.Root.Left.Left.Key); Assert.AreEqual(Black, tree.Root.Left.Left.Color); Assert.AreEqual(6, tree.Root.Left.Right.Key); Assert.AreEqual(Black, tree.Root.Left.Right.Color); Assert.AreEqual(11, tree.Root.Right.Right.Key); Assert.AreEqual(Red, tree.Root.Right.Right.Color); Assert.AreEqual(0, tree.Root.Left.Left.Left.Key); Assert.AreEqual(Red, tree.Root.Left.Left.Left.Color); Assert.AreEqual(2, tree.Root.Left.Left.Right.Key); Assert.AreEqual(Red, tree.Root.Left.Left.Right.Color); tree.Add(-1); // here, 5 becomes the root after rebalancing. tree.Add(-2); Assert.AreEqual(5, tree.Root.Key); Assert.AreEqual(Black, tree.Root.Color); Assert.AreEqual(1, tree.Root.Left.Key); Assert.AreEqual(Red, tree.Root.Left.Color); Assert.AreEqual(-1, tree.Root.Left.Left.Key); Assert.AreEqual(Black, tree.Root.Left.Left.Color); Assert.AreEqual(2, tree.Root.Left.Right.Key); Assert.AreEqual(Black, tree.Root.Left.Right.Color); Assert.AreEqual(-2, tree.Root.Left.Left.Left.Key); Assert.AreEqual(Red, tree.Root.Left.Left.Left.Color); Assert.AreEqual(0, tree.Root.Left.Left.Right.Key); Assert.AreEqual(Red, tree.Root.Left.Left.Right.Color); Assert.AreEqual(8, tree.Root.Right.Key); Assert.AreEqual(Red, tree.Root.Right.Color); Assert.AreEqual(6, tree.Root.Right.Left.Key); Assert.AreEqual(Black, tree.Root.Right.Left.Color); Assert.AreEqual(9, tree.Root.Right.Right.Key); Assert.AreEqual(Black, tree.Root.Right.Right.Color); Assert.AreEqual(11, tree.Root.Right.Right.Right.Key); Assert.AreEqual(Red, tree.Root.Right.Right.Right.Color); Assert.AreEqual(true, tree.Validate()); }
public void Setup() { tree = new RbTree <int>(); tree.Add(8); tree.Add(5); tree.Add(9); tree.Add(2); tree.Add(6); tree.Add(11); tree.Add(1); tree.Add(0); tree.Add(-1); tree.Add(-2); }
public void Setup() { 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); t2 = new RbTree <int>(); t2.Add(9); t2.Add(8); t2.Add(10); t2.Add(7); t2.Add(11); }
public override IEnumerable <TElement> Sort(IEnumerable <TElement> collection, IComparer <TElement> comparer, bool parallel) { var tree = new RbTree(comparer); foreach (var element in collection) { tree.Add(element); } return(tree); }
public override IEnumerable <TElement> Sort(IEnumerable <TElement> collection, IComparer <TElement> comparer, bool parallel) { var array = collection.ToArray(); var tree = new RbTree(comparer, array); for (int i = 0; i < array.Length; i++) { tree.Add(i); } return(tree); }
static void GenerateFile(string filename) { using var writer = File.CreateText(filename); var tree = new RbTree <string, string>((one, two) => one.CompareTo(two)); var generator = new StringGenerator(); for (int i = 0; i < 100_000; i++) { var str = generator.GenerateString(); tree.Add(str, str); writer.WriteLine(str); } }
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."); }
public void Setup() { tree = new RbTree <int>(); tree.Add(3); tree.Add(2); tree.Add(4); tree.Add(1); tree.Add(5); tree.Add(0); tree.Add(-1); tree.Add(-2); tree.Add(-3); tree.Add(-4); tree.Add(-5); }
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(); }
public void Test() { 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); t1.Add(-3); t1.Add(-4); t1.Add(-5); var t2 = t1.Subtree(t1.Root.Left.Left); t1.Remove(-5); Assert.AreEqual(true, t2.Contains(-5)); Assert.AreEqual(true, t2.Validate()); }