public void EmptyTreeHasZeroHeight() { var sut = new AlgorithmsAndDataStructures.DataStructures.RbTree.RedBlackTree(); Assert.Equal(0, sut.Height); sut.CheckTreeValidity(); }
public void TreeIsBalancedWhenCase3Deletion() { var root = new RedBlackTreeNode(); root.IsRed = false; root.Value = 10; root.Left = new RedBlackTreeNode { Parent = root, IsRed = false, Value = -10, }; root.Right = new RedBlackTreeNode { Parent = root, IsRed = false, Value = 30, }; var sut = new AlgorithmsAndDataStructures.DataStructures.RbTree.RedBlackTree(root); sut.Delete(-10); sut.CheckTreeValidity(); }
public void CanInsertRootNode() { var sut = new AlgorithmsAndDataStructures.DataStructures.RbTree.RedBlackTree(); sut.Insert(3); Assert.Equal(0, sut.Height); sut.CheckTreeValidity(); }
public void TreeIsBalancedWhenRightLeftSideUnbalanced() { var sut = new AlgorithmsAndDataStructures.DataStructures.RbTree.RedBlackTree(); sut.Insert(3); sut.Insert(5); sut.Insert(4); Assert.Equal(1, sut.Height); sut.CheckTreeValidity(); }
public void TreeIsRebalanacedAfterDelete() { for (var i = 0; i < 100; i++) { var sut = new AlgorithmsAndDataStructures.DataStructures.RbTree.RedBlackTree(); var random = new Random(); var seed = new int[1000]; for (var j = 0; j < seed.Length; j++) { seed[j] = random.Next(seed.Length * 10); sut.Insert(seed[j]); sut.CheckTreeValidity(); } for (var z = 0; z < seed.Length; z++) { sut.Delete(seed[z]); sut.CheckTreeValidity(); } } }
public void EmptyTreeIsBalanced() { var sut = new AlgorithmsAndDataStructures.DataStructures.RbTree.RedBlackTree(); sut.CheckTreeValidity(); }