Beispiel #1
0
        static void testFixUpCase2()
        {
            RedBlackTree rb   = new RedBlackTree();
            BNode        root = new BNode(11, Color.Black);
            BNode        n2   = new BNode(2, Color.Red);
            BNode        n14  = new BNode(14, Color.Black);

            root.left  = n2;
            root.right = n14;
            n14.parent = root;
            n2.parent  = root;


            BNode n1 = new BNode(1, Color.Black);
            BNode n7 = new BNode(7, Color.Red);

            n2.left   = n1;
            n2.right  = n7;
            n1.parent = n2;
            n7.parent = n2;

            BNode n5 = new BNode(5, Color.Black);
            BNode n8 = new BNode(8, Color.Black);

            n7.left   = n5;
            n7.right  = n8;
            n5.parent = n7;
            n8.parent = n7;

            BNode n4 = new BNode(4, Color.Red);

            n5.left   = n4;
            n4.parent = n5;

            new RedBlackTree().Display(root);

            Console.WriteLine("after fixing");
            BNode fix = rb.insertFixUp(n7);

            rb.Display(fix);

            //BNode fix = rb.RotateLeft(n7.parent);
            //Console.WriteLine("Left:{0} -- Node:{1} -- Right{2}", fix.left,fix,fix.right);
            //BNode fix2 = rb.RotateRight(fix.parent);
            //Console.WriteLine("Left:{0} -- Node:{1} -- Right{2}", fix2.left, fix2, fix2.right);
        }