旋转时红黑树旋转失去了值

时间:2016-04-12 06:52:06

标签: java c# data-structures red-black-tree

我在树上执行旋转时遇到问题。没有旋转插入是好的,但是在执行旋转时信息会丢失。

插入示例50,75,40,45,25,45,46 - 即使RBT规则一切正常但是当插入47时数据丢失且只有50,40,25,45和75出现。

//Left Rotate
        public void LeftRotate(BNode root, BNode x)//violatingNode)
        {

                BNode y = x.right;
                x.right = y.left;
                if (y.left != null)
                    y.left.parent = x;
                if (x.parent == null)
                    root = y;
                else if (x.parent.left == x)
                    x.parent.left = y;
                else
                    x.parent.right = y;
                y.left = x;
                y.parent = x.parent;
                x.parent = y;
        }

//Right Rotate
        public void RightRotate(BNode root, BNode x) //BNode violatingNode
        {
            BNode y = x.left;
            x.left = y.right;
            if (y.right != null)
            {
                y.right.parent = x;
            }
            if (x.parent == null)
            {
                root = y;
            }
            else if (x.parent.left == x)
            {
                x.parent.left = y;
            }
            else
                x.parent.right = y;

            y.right = x;
            y.parent = x.parent;
            x.parent = y;
        }  

0 个答案:

没有答案