Exemple #1
0
        public void EmptyTreeHasZeroHeight()
        {
            var sut = new AlgorithmsAndDataStructures.DataStructures.RbTree.RedBlackTree();

            Assert.Equal(0, sut.Height);
            sut.CheckTreeValidity();
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        public void CanInsertRootNode()
        {
            var sut = new AlgorithmsAndDataStructures.DataStructures.RbTree.RedBlackTree();

            sut.Insert(3);

            Assert.Equal(0, sut.Height);
            sut.CheckTreeValidity();
        }
Exemple #4
0
        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();
        }
Exemple #5
0
        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();
                }
            }
        }
Exemple #6
0
        public void EmptyTreeIsBalanced()
        {
            var sut = new AlgorithmsAndDataStructures.DataStructures.RbTree.RedBlackTree();

            sut.CheckTreeValidity();
        }