Programuju delete na vyhledavacich stromech. Mam ho napsany rekurzivne.
V hlavnim programu pak napisu rekneme neco jako:
BVS tree = new BVS(10, new BVS(5, new BVS(20, null, null), null), new BVS(50, null, null));
tree.delete(5, null);
Do druheho parametru si pak pri rekurzivnim prochazeni stromem predavam "ukazatel" na otce. Problem nastane, pokud chci smazat koren.
Reseni me napadlo nekolik, z toho asi nejlepsi je toto: Pri volani metody delete si vytvorim "prapredka", ktery bude ukazovat na koren a po provedeni delete jednoduse porovnam koren se synem prapredka, a pokud se lisi, tak koren zmenim.
Nakonec jsem si naprogramoval statickou metodu delete, ktere predam koren a klic. V ni vytvorim prapredka, zavolam skutecny rekurzivni delete a nakonec porovnam koren vuci prapredkovi.
Dusan