public void usun(int wartosc) {
korzen = Usunrekord(korzen, wartosc);
}
private Wezel Usunrekord(Wezel korzen, int wartosc1) {
if (korzen == null)
return korzen;
if (wartosc1 < korzen.getWartosc()) {
korzen.setLewy(Usunrekord(korzen.getLewy(), wartosc1));
if (wartosc1 > korzen.getWartosc())
korzen.setPrawy(Usunrekord(korzen.getPrawy(), wartosc1));
else {
if (korzen.getLewy() == null)
return korzen.getPrawy();
else if (korzen.getPrawy() == null)
return korzen.getLewy();
korzen.setWartosc(znajdzMin());
korzen.setPrawy(Usunrekord(korzen.getPrawy(), korzen.getWartosc()));
}
return korzen;
}
return korzen;
}
Mam problem z tą metodą, chciałbym, żeby usuwała, ale operatory przypisania nic nie dają, drzewo tworzę za pomocą losowo wygenerowanej tablicy, gdzie a[0] zawsze jest korzeniem, próbowałem kilku metod na usunięcie elementu z drzewa, ale żaden nie działa, ewentualnie nie wiem co zrobić by zadziałało.
Dostaje taki wynik na przykład:
Podaj ilosc elementow ile chcesz wprowadzic do drzewa: 5
17 19 26 15 7
Wartość minimum: 7
Wartość maksimum: 26
Wyswietlanie Preorder:
17, 15, 7, 19, 26,
Wyświetlanie Inorder:
7, 15, 17, 19, 26,
Wyświetlanie Postorder:
7, 15, 26, 19, 17,
Jaka wartosc chcesz usunac: 19
7, 15, 17, 19, 26,