public void Bst_Height_Test() { IBinarySearchTree tree = new Implementations.BinarySearchTree(50); // sub tree 1 tree.BstInsert(72); tree.BstInsert(54); tree.BstInsert(76); tree.BstInsert(67); // sub tree 2 tree.BstInsert(17); tree.BstInsert(12); tree.BstInsert(23); tree.BstInsert(9); tree.BstInsert(14); tree.BstInsert(19); tree.Height.Should().Be(3); tree.Left.Height.Should().Be(2); var balance = tree.Left.Height - tree.Right.Height; balance.Should().Be(0); }
public void AvlTree_RightLeftRotation_Test_1() { var tree1 = new Implementations.BinarySearchTree(36); var tree2 = tree1.BstInsert(67); var tree3 = tree1.BstInsert(42); var rotate = tree2.AvlRightLeftRotate(); rotate.Key.Should().Be(36); rotate.Left.Should().BeNull(); rotate.Right.Should().BeNull(); rotate.Parent.Should().Be(tree3); var parent = rotate.Parent; parent.Key.Should().Be(42); parent.Left.Should().Be(tree1); parent.Right.Should().Be(tree2); parent.Parent.Should().BeNull(); var right = parent.Right; right.Key.Should().Be(67); right.Left.Should().BeNull(); right.Right.Should().BeNull(); right.Parent.Should().Be(tree3); }
public void AvlTree_LeftRotation_Test_5() { var tree1 = new Implementations.BinarySearchTree(45); var tree2 = tree1.BstInsert(13); var tree3 = tree1.BstInsert(29); var rotate = tree2.AvlLeftRotate(); rotate.Key.Should().Be(13); rotate.Left.Should().BeNull(); rotate.Right.Should().BeNull(); rotate.Parent.Should().Be(tree3); var parent = rotate.Parent; parent.Key.Should().Be(29); parent.Left.Should().Be(tree2); parent.Right.Should().BeNull(); parent.Parent.Should().Be(tree1); var grandParent = parent.Parent; grandParent.Parent.Should().BeNull(); grandParent.Right.Should().BeNull(); grandParent.Left.Should().Be(tree3); }
public void AvlTree_LeftRotate_Simple_Test_1() { // this requires left rotation var tree1 = new Implementations.BinarySearchTree(1); var tree2 = tree1.BstInsert(2); var tree3 = tree1.BstInsert(3); var rotate = tree1.AvlLeftRotate(); rotate.Parent.Key.Should().Be(2); rotate.Left.Should().BeNull(); rotate.Right.Should().BeNull(); var parent = rotate.Parent; parent.Key.Should().Be(2); parent.Left.Key.Should().Be(1); parent.Right.Key.Should().Be(3); parent.Parent.Should().BeNull(); var parentRight = parent.Right; parentRight.Key.Should().Be(3); parentRight.Left.Should().BeNull(); parentRight.Right.Should().BeNull(); parentRight.Parent.Key.Should().Be(2); }
public void AvlTree_RightRotate_Test_1() { var tree = new Implementations.BinarySearchTree(10); var tree2 = tree.BstInsert(9); var tree3 = tree.BstInsert(8); var rotate = tree.AvlRightRotate(); rotate.Left.Should().BeNull(); rotate.Right.Should().BeNull(); rotate.Parent.Key.Should().Be(9); var parent = rotate.Parent; parent.Parent.Should().BeNull(); parent.Key.Should().Be(9); parent.Right.Key.Should().Be(10); parent.Left.Key.Should().Be(8); var left = parent.Left; left.Left.Should().BeNull(); left.Right.Should().BeNull(); left.Parent.Key.Should().Be(9); }
public void Bst_Balance_Test() { var bst = new Implementations.BinarySearchTree(2); var b1 = bst.BstInsert(3); var b2 = bst.BstInsert(4); bst.Balance.Should().Be(2); b1.Balance.Should().Be(1); b2.Balance.Should().Be(0); }
public void Bst_Height_Simple_Test() { IBinarySearchTree root = new Implementations.BinarySearchTree(2); var b1 = root.BstInsert(3); var b2 = root.BstInsert(4); root.Height.Should().Be(2); b1.Height.Should().Be(1); b2.Height.Should().Be(0); }
public void Bst_Balance_Test_1() { IBinarySearchTree tree = new Implementations.BinarySearchTree(3); var v2 = tree.BstInsert(4); var v3 = tree.BstInsert(5); tree.Height.Should().Be(2); tree.Balance.Should().Be(2); v2.Balance.Should().Be(1); v3.Balance.Should().Be(0); }
public void Bst_Balance_Test_3() { IBinarySearchTree tree = new Implementations.BinarySearchTree(50); var v2 = tree.BstInsert(10); var v3 = tree.BstInsert(60); var v4 = tree.BstInsert(70); var v5 = tree.BstInsert(80); tree.Balance.Should().Be(2); v2.Balance.Should().Be(0); v3.Balance.Should().Be(2); v4.Balance.Should().Be(1); }
public void Bst_Balance_Test_2() { IBinarySearchTree tree = new Implementations.BinarySearchTree(50); var v2 = tree.BstInsert(11); var v3 = tree.BstInsert(9); var v4 = tree.BstInsert(6); var v5 = tree.BstInsert(8); tree.Balance.Should().Be(-4); v2.Balance.Should().Be(-3); v3.Balance.Should().Be(-2); v4.Balance.Should().Be(1); v5.Balance.Should().Be(0); }
public void AvlTree_LeftRotate_Simple_Test_4() { var tree1 = new Implementations.BinarySearchTree(1); var tree2 = tree1.BstInsert(2); var rotate = tree1.AvlLeftRotate(); rotate.Key.Should().Be(1); rotate.Left.Should().BeNull(); rotate.Right.Should().BeNull(); rotate.Parent.Should().Be(tree2); tree2.Parent.Should().BeNull(); tree2.Left.Should().Be(tree1); tree2.Right.Should().BeNull(); }
public void AvlTree_RightRotate_Test_3() { var tree1 = new Implementations.BinarySearchTree(2); var tree2 = tree1.BstInsert(1); var rotate = tree1.AvlRightRotate(); rotate.Parent.Should().Be(tree2); rotate.Left.Should().BeNull(); rotate.Right.Should().BeNull(); var parent = rotate.Parent; parent.Parent.Should().BeNull(); parent.Left.Should().BeNull(); parent.Right.Should().Be(tree1); }
public void Bst_Max_Test() { IBinarySearchTree tree = new Implementations.BinarySearchTree(50); // sub tree 1 tree.BstInsert(72); tree.BstInsert(54); tree.BstInsert(76); tree.BstInsert(67); // sub tree 2 tree.BstInsert(17); tree.BstInsert(12); tree.BstInsert(23); tree.BstInsert(9); tree.BstInsert(14); tree.BstInsert(19); tree.Max().Key.Should().Be(76); }
public void Bst_Successor_Test() { IBinarySearchTree tree = new Implementations.BinarySearchTree(50); // sub tree 1 tree.BstInsert(72); tree.BstInsert(54); tree.BstInsert(76); tree.BstInsert(67); // sub tree 2 tree.BstInsert(17); tree.BstInsert(12); tree.BstInsert(23); tree.BstInsert(9); tree.BstInsert(14); tree.BstInsert(19); tree.Successor(tree).Key.Should().Be(54); tree.Successor(tree.Left).Key.Should().Be(19); }
public void Bst_Get_Root_Test() { IBinarySearchTree tree = new Implementations.BinarySearchTree(50); // sub tree 1 tree.BstInsert(72); tree.BstInsert(54); tree.BstInsert(76); tree.BstInsert(67); // sub tree 2 tree.BstInsert(17); tree.BstInsert(12); tree.BstInsert(23); tree.BstInsert(9); tree.BstInsert(14); var last = tree.BstInsert(19); tree.GetRoot().Key.Should().Be(50); last.GetRoot().Key.Should().Be(50); }
public void Bst_Delete_Test() { IBinarySearchTree tree = new Implementations.BinarySearchTree(50); // sub tree 1 tree.BstInsert(72); tree.BstInsert(54); tree.BstInsert(76); tree.BstInsert(67); // sub tree 2 tree.BstInsert(17); tree.BstInsert(12); tree.BstInsert(23); tree.BstInsert(9); tree.BstInsert(14); tree.BstInsert(19); tree.BstDelete(tree.Right).Key.Should().Be(76); tree.Count.Should().Be(10); tree.Right.Key.Should().Be(76); }
public void Bst_Search_Test() { IBinarySearchTree tree = new Implementations.BinarySearchTree(50); // sub tree 1 tree.BstInsert(72); tree.BstInsert(54); tree.BstInsert(76); tree.BstInsert(67); // sub tree 2 tree.BstInsert(17); tree.BstInsert(12); tree.BstInsert(23); tree.BstInsert(9); tree.BstInsert(14); tree.BstInsert(19); tree.Search(14).Should().NotBeNull(); tree.Search(14).Key.Should().Be(14); tree.Search(14).Parent.Key.Should().Be(12); }
public void AvlInsert_Test_1() { var tree1 = new Implementations.BinarySearchTree(1); var tree2 = tree1.AvlInsert(2); var tree3 = tree1.AvlInsert(3); tree1.Parent.Key.Should().Be(2); tree1.Left.Should().BeNull(); tree1.Right.Should().BeNull(); var parent = tree1.Parent; parent.Key.Should().Be(2); parent.Left.Key.Should().Be(1); parent.Right.Key.Should().Be(3); parent.Parent.Should().BeNull(); var parentRight = parent.Right; parentRight.Key.Should().Be(3); parentRight.Left.Should().BeNull(); parentRight.Right.Should().BeNull(); parentRight.Parent.Key.Should().Be(2); }
public void Bst_Insert_Test() { IBinarySearchTree tree = new Implementations.BinarySearchTree(50); // sub tree 1 var test = tree.BstInsert(72); tree.BstInsert(54); tree.BstInsert(76); tree.BstInsert(67); // sub tree 2 tree.BstInsert(17); tree.BstInsert(12); tree.BstInsert(23); tree.BstInsert(9); tree.BstInsert(14); tree.BstInsert(19); tree.Key.Should().Be(50); tree.Right.Key.Should().Be(72); tree.Count.Should().Be(11); test.Parent.Key.Should().Be(50); }