Функция удаления красного черного дерева - PullRequest
1 голос
/ 27 марта 2012

Функция удаления не работает. Если я удаляю узел, то остается его поддерево.

Что ты думаешь не так с этим? Заранее спасибо.

node *deleteNode(node* &root, node *z){
    node *x, *y;

        cout << "Element to delete: " << z->data << endl;
        if (z->leftchild == nil || z->rightchild == nil)
            y = z;
        else
            y = treesuccessor(z);

        if (y->leftchild != nil)
            x = y->leftchild;
        else
            x = y->rightchild;

        if (x != nil)
            x->parent = y->parent;

        if (y->parent == nil)
            root = x;

        else if (y == y->parent->leftchild)
            y->parent->leftchild = x;
        else
            y->parent->rightchild = x;


        if (y != z)
            z->data = y->data;
        if (y->color == black)
            deletefixup(root, x);
    return y;
}
...