Example #1
0
        public Int32AvlNode AddLeftLeft(Int32AvlNode orginalRoot, int i)
        {
            var api = CreateApi();

            var oldNode4 = orginalRoot.Left;
            var node2    = CreateNode(2);
            var newRoot4 = api.AddNode(orginalRoot, node2);

            Assert.IsNotNull(newRoot4);
            Assert.IsNotNull(newRoot4.Left);
            Assert.IsNotNull(newRoot4.Right);

            Assert.AreNotSame(newRoot4.Right, orginalRoot);
            Assert.AreNotSame(newRoot4, oldNode4);
            Assert.AreSame(node2, newRoot4.Left);
            Assert.AreEqual(newRoot4.Key, oldNode4.Key);
            Assert.AreEqual(orginalRoot.Key, newRoot4.Right.Key);
            Assert.AreEqual(2, newRoot4.Left.Key);
            Assert.AreEqual(4, newRoot4.Key);
            Assert.AreEqual(6, newRoot4.Right.Key);

            Assert.AreEqual(0, newRoot4.BalanceFactor);
            Assert.AreEqual(0, newRoot4.Left.BalanceFactor);
            Assert.AreEqual(0, newRoot4.Right.BalanceFactor);

            return(newRoot4);
        }
Example #2
0
        public Int32AvlNode AddRightRight(Int32AvlNode newRoot4, int i)
        {
            var api = CreateApi();

            var oldNode6 = newRoot4.Right;
            var node8    = CreateNode(i);
            var newRoot6 = api.AddNode(newRoot4, node8);

            Assert.IsNotNull(newRoot6);
            Assert.IsNotNull(newRoot6.Left);
            Assert.IsNotNull(newRoot6.Right);
            Assert.AreNotSame(newRoot6.Left, newRoot4);
            Assert.AreNotSame(newRoot6, oldNode6);
            Assert.AreSame(node8, newRoot6.Right);
            Assert.AreEqual(newRoot6.Key, oldNode6.Key);
            Assert.AreEqual(newRoot4.Key, newRoot6.Left.Key);
            Assert.AreEqual(4, newRoot6.Left.Key);
            Assert.AreEqual(6, newRoot6.Key);
            Assert.AreEqual(8, newRoot6.Right.Key);

            Assert.AreEqual(0, newRoot6.BalanceFactor);
            Assert.AreEqual(0, newRoot6.Left.BalanceFactor);
            Assert.AreEqual(0, newRoot6.Right.BalanceFactor);

            return(newRoot6);
        }
Example #3
0
        public Int32AvlNode CreateNode(int i)
        {
            var avlNode = new Int32AvlNode
            {
                Key = i
            };


            return(avlNode);
        }
Example #4
0
        public void Case_OnlyRootPresent() // Case 1.1
        {
            var api = CreateApi();

            Int32AvlNode root = null;

            root = api.AddNode(root, CreateNode(2));

            root = api.Remove(root, 2);

            Assert.IsNull(root);
        }
Example #5
0
        public void Case_RootAndLeftChild_DeleteChild() // Case 1.2a
        {
            var api = CreateApi();

            Int32AvlNode root = null;

            root = api.AddNode(root, CreateNode(2));
            root = api.AddNode(root, CreateNode(1));

            root = api.Remove(root, 1);

            Assert.AreEqual(2, root.Key);
            Assert.AreEqual(0, root.BalanceFactor);
        }
Example #6
0
        public void Case_RootAndFour_10_5_20_1_6_DeleteLeaf_1() // Case 1.2x
        {
            var api = CreateApi();

            Int32AvlNode root = null;

            root = api.AddNode(root, CreateNode(10));
            root = api.AddNode(root, CreateNode(5));
            root = api.AddNode(root, CreateNode(20));
            root = api.AddNode(root, CreateNode(1));
            root = api.AddNode(root, CreateNode(6));

            root = api.Remove(root, 1);

            Assert.AreEqual(10, root.Key);
            Assert.AreEqual(1, root.BalanceFactor);
            Assert.AreEqual(-1, root.Left.BalanceFactor);
            Assert.AreEqual(0, root.Right.BalanceFactor);
            Assert.AreEqual(0, root.Left.Right.BalanceFactor);
        }
Example #7
0
        public Int32AvlNode AddLeft(Int32AvlNode node4, int i)
        {
            var api = CreateApi();

            var node2    = CreateNode(i);
            var newRoot4 = api.AddNode(node4, node2);
            var newNode2 = newRoot4.Left;

            Assert.IsNotNull(node2);
            Assert.IsNotNull(newRoot4);
            Assert.IsNotNull(newNode2);
            Assert.AreNotSame(node4, newRoot4);
            Assert.AreSame(node2, newNode2);

            Assert.AreEqual(0, node4.BalanceFactor);
            Assert.AreEqual(0, node2.BalanceFactor);
            Assert.AreEqual(0, newNode2.BalanceFactor);
            Assert.AreEqual(1, newRoot4.BalanceFactor);

            return(newRoot4);
        }
Example #8
0
        public Int32AvlNode AddRight(Int32AvlNode node4, int i)
        {
            var api = CreateApi();

            var node6    = CreateNode(i);
            var newRoot4 = api.AddNode(node4, node6);
            var newNode6 = newRoot4.Right;

            Assert.IsNotNull(node6);
            Assert.IsNotNull(newRoot4);
            Assert.IsNotNull(newNode6);
            Assert.AreNotSame(node4, newRoot4);
            Assert.AreSame(node6, newNode6);

            Assert.AreEqual(0, node4.BalanceFactor);
            Assert.AreEqual(0, node6.BalanceFactor);
            Assert.AreEqual(0, newNode6.BalanceFactor);
            Assert.AreEqual(-1, newRoot4.BalanceFactor);

            return(newRoot4);
        }
Example #9
0
        public void Case_RootAndFour_10_5_20_15_DeleteNode_20() // Case 2b
        {
            var api = CreateApi();

            Int32AvlNode root = null;

            root = api.AddNode(root, CreateNode(10));
            root = api.AddNode(root, CreateNode(5));
            root = api.AddNode(root, CreateNode(20));
            root = api.AddNode(root, CreateNode(15));

            root = api.Remove(root, 20);

            Assert.AreEqual(10, root.Key);
            Assert.AreEqual(5, root.Left.Key);
            Assert.AreEqual(15, root.Right.Key);

            Assert.AreEqual(0, root.BalanceFactor);
            Assert.AreEqual(0, root.Left.BalanceFactor);
            Assert.AreEqual(0, root.Right.BalanceFactor);
        }
Example #10
0
        public Int32AvlNode AddLeftRight(Int32AvlNode newRoot4, int i)
        {
            var api = CreateApi();

            var newNode  = CreateNode(i);
            var newRoot5 = api.AddNode(newRoot4, newNode);
            var oldNode6 = newRoot4.Left;

            Assert.IsNotNull(newRoot5);
            Assert.IsNotNull(newRoot5.Right);
            Assert.IsNotNull(newRoot5.Left);
            Assert.AreNotSame(newRoot5, newNode);
            Assert.AreNotSame(newRoot5.Right, newRoot4);
            Assert.AreNotSame(newRoot5.Left, oldNode6);
            Assert.AreEqual(newRoot5.Key, newNode.Key);
            Assert.AreEqual(newRoot5.Right.Key, newRoot4.Key);
            Assert.AreEqual(newRoot5.Left.Key, oldNode6.Key);

            Assert.AreEqual(0, newRoot5.BalanceFactor);
            Assert.AreEqual(0, newRoot5.Left.BalanceFactor);
            Assert.AreEqual(0, newRoot5.Right.BalanceFactor);

            return(newRoot5);
        }