Drzewa BST - język C.

Archi
Użytkownik
Użytkownik
Posty: 18
Rejestracja: 5 paź 2009, o 19:33
Płeć: Mężczyzna
Lokalizacja: Biała Podlaska
Podziękował: 1 raz

Drzewa BST - język C.

Post autor: Archi »

Mam do wykonania program o treści :

"Dokonano dwóch obiegów pewnego drzewa BST o różnych wartościach węzłów
całkowitych. Pierwszy obieg w porządku preorder a drugi w porządku postorder.
Następnie kolejno napotykane wartości umieszczono w dwóch tablicach.

Napisz program, który wczyta z dwóch plików dwie tablice liczb całkowitych
stanowiących domniemaną reprezentację drzewa zgodnie z ww. założeniami. Sprawdzić
czy z podanych danych uda się odtworzyć to drzewo. Jeżeli tak to zaproponuj
wizualizację drzewa."

Potrzebuje kilku wskazówek, bo nie wiem jak się za to zabrać. Wyobrażam to sobie tak:
Mając dane drzewo, zapisuje wartości węzłów do 2 tablic przez obieg preorder i postorder otrzymyjąc dwie tablice z tymi samymi danymi, tylko inaczej posortowane - do tej pory nie widzę wiekszych problemów.
Dalej nie dokońca rozumiem polecenie, prosiłbym o jakieś instrukcjie albo pseudokod.
Awatar użytkownika
paladin
Użytkownik
Użytkownik
Posty: 148
Rejestracja: 24 sty 2005, o 22:15
Płeć: Mężczyzna
Lokalizacja: Kraków
Pomógł: 19 razy

Drzewa BST - język C.

Post autor: paladin »

Zaraz, ale przecież nie masz danego drzewa, tylko dwie tablice. Drzewo musisz dopiero skonstruować.

Jeśli to ma być drzewo z własnością BST, to zadanie nie jest trudne: pierwszy węzeł w kolejności preorder to korzeń drzewa, wszystkie mniejsze od niego to lewe poddrzewo, wszystkie większe to prawe poddrzewo. Wystarczy zatem tablicę "preorder" podzielić na dwie części i wywołać się na nich rekurencyjnie.
Tablica "postorder" nie jest w tym wypadku w ogóle potrzebna.
abc666

Drzewa BST - język C.

Post autor: abc666 »

Ja to zadanie rozumiem jeszcze tak, że np. tablica preorder i postorder mogą reprezentować różne drzewa tzn. że jest źle itp.. Ogólnie obie tablice powinny odtwarzać to samo drzewo.
ODPOWIEDZ