Usuwanie z drzewa czerwono-czarnego

0

Witam mam taki mały problem, otóż ciągle wywala mi błąd NullPointerException. Przy wywołaniu x.rodzic=y.rodzic;. Po krótkiej analizie, doszedłem do tego, że zmienna x ciągle jest pusta, przy odpowiednim zestawie danych. Chciałbym się dowiedzieć, jak naprawić ten błąd. Sam już po prostu pomysłu na to nie mam.

     Element delete(Element DeleteNode) 
        {
        Element x=null,y=null;
        if((DeleteNode.left==null)||(DeleteNode.right==null))
                y=DeleteNode;
        else 
                y=Nastepnik(DeleteNode,root);
                                
        if (y.left != null)
                x=y.left;
        else 
                x=y.right;
          
            
                x.rodzic=y.rodzic;
        if (y.rodzic == null)
                root = x;
        else 
                if (y == y.rodzic.left)
                        y.rodzic.left = x;
                else 
                        y.rodzic.right = x;
        if (y != DeleteNode)
                DeleteNode.value = y.value;
   
        if(isBlack(y))
        { DeleteFixUp(x);}
        return y;
        }

 public Element Nastepnik(Element x, Element root)
    {

        if( x.right != null )
        { x=Najmniejszy(x.right);
            return x;
                  }

        Element succ = null;

        while (root != null)
        {
            if (_comparator.compare(x.value,root.value)==-1)
            {
                succ = root;
                root = root.left;
            }
            else if ((_comparator.compare(x.value,root.value)==1))
                root = root.right;
            else
                break;
        }

        return succ;
    }
0

Znalazłem błąd,
Okej znalazłem już błąd.
Musiałem zrobić takie coś

 
if (x == null) {              x = new Element(null);              x.kolor=0;          }
        x.rodzic=y.rodzic;

Pojawił się, za to inny problem, jak usunąć później tego null'a?

0

Problem rozwiązany :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1