Witam
Mam problem z usuwaniem drzew wielokierunkowych. Problem jaki muszę rozwiązać to usunięcie poddrzewa wraz z węzłem.
Nie wiem jak to rozwiązać ze względu na ilość możliwych potomków oraz rodzeństwa. Każdy węzeł może mieć różną ilość potomków oraz rodzeństwa.
W ten sposób stworzyłem typ potrzebny do stworzenia takiego drzewa:
Ptree= ^leaf;
leaf = record
dana: string[50];
left: Ptree;
right: Ptree;
down: Ptree;
up: Ptree;
end;
Mam odpowiednie procedury potrzebne do tworzenia korzenia, dodawania elementów w różny sposób. Ale nie o to tutaj mi chodzi.
Potrzebuję o rady odnośnie przejścia przez wszystkie elementy od dołu aż do napotkania elementu, od którego mam wszystko usunąć.
Myślę, że trzeba to zrobić w ten sposób. Mam jakiś węzeł X. Muszę przejść w dół do liścia, który nie ma już potomków. Usuwam całe rodzeństwo (jeśli rodzeństwo ma dalej potomstwo - to tak dalej), na końcu usuwam ostatni element z potomstwa, przechodzę na pozom wyżej. Tam w analogiczny sposób postępuję.
Mam problem jak to "przekuć" na kod procedury. Wiem że trzeba rekurencyjne przejść przez kolejne poziomy drzewa.
Proszę o jakieś porady.