Usuwanie elementów drzewa

0

Mam mały problem, gdyż muszę napisać funkcję UsunElementy(ElementDrzewa * Korzen, int Liczba) usuwającą elementy z drzewa o wartości większej od tej podanej jako drugi parametr. Nie bardzo wiem jak się za to zabrać, więc będę bardzo wdzięczny za pomoc.

0

Wyszukaj węzeł o wartości Liczba (albo miejsce gdzie powinien być gdyby istniał) a następnie wywal całe prawe poddrzewo takiego węzła.
Czemu? Bo na prawo zawsze masz wartości większe niż ta węźle.

0

Zrobiłem tak jak mówiłeś i znalazłem ten element.
Moja funkcja do usuwania drzewa wygląda tak:

void UsunDrzewo (ElementDrzewa * Korzen) {  
 ElementDrzewa *pom;    
 if (Korzen)  {  
	 UsunDrzewo (Korzen->Lewo);  
	 UsunDrzewo (Korzen->Prawo);   
            pom=Korzen;  
        Korzen=NULL;  
        delete pom;    
 }  
}  

i chciałem ją wywołać w ten sposób:

UsunDrzewo(ZnajdzWezel(Drzewo,5)->Prawo);

lecz wtedy wywala błąd.

0

Problem rozwiązany. Wyzeorwałem wskaźnik na prawy element i jest ok.

0

Weź pod uwagę co się stanie jeśli elementu o kluczu 5 nie będzie w drzewie...

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