Pseudokod dla non-rekurencyjne realizacji wysokości drzewa i isBST

głosy
4

Ja w procesie konwersji funkcji rekurencyjnej na BST do nie rekursywnego w celu przygotowania się do rozmowy. Do tej pory ja zorientowali się zamĂłwienia przedpremierowego, Inorder, postorder, wyszukiwanie, usuwanie, wstawianie, i przekształcenie BST do kołowego połączonej listy. Mam problemy zastanawianie się, jak używać stosu lub kolejki, aby uzyskać wysokość i znaleźć jeśli jest to BST. Wszelkie wskazówki będą bardzo mile widziane. Ja nie szukam kodu, ale logiki kodu.

Utwórz 14/09/2011 o 03:03
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
5

Na początek wielkie zadanie przygotowania do wywiadów takich jak ten! Mam nadzieję, że dobrze się bawisz zabawy z tych algorytmów.

Zacznijmy zadanie próbuje ustalić, czy drzewo binarne jest BST. Jednym ze sposobów osiągnięcia tego celu jest zrobić spacer Inorder drzewa i sprawdzić, czy elementy są w posortowanych. To będzie prawdziwe wtedy i tylko wtedy, gdy drzewo jest BST. Skoro masz już kod, aby zrobić spacer Inorder elementów drzewa, powinieneś być w stanie łatwo dostosować swój kod, aby sprawdzić, czy elementy, które wychodzą na spacer Inorder są klasyfikowane przez śledzenie ostatniego elementu, który widział w spacer inorder, a następnie porównując każdy element wygenerowane do poprzedniego elementu. Jeśli te dwie rzeczy są w porządku, drzewo nie jest BST.

Aby określić wysokość drzewa, jednym rozwiązaniem byłoby podjąć jakiekolwiek z poszukiwań, które wpadliśmy tej pory (preorder, postorder, Inorder) i śledzić wysokości stosu w każdym punkcie. Chodzi o to, że skoro twój stack będzie zawsze śledzić ścieżkę z dowolnego węzła z powrotem do korzeni, można po prostu iść na drzewo i nagrać najgłębszy że kiedykolwiek widział stos stać. Ta maksymalna głębokość wynosi wówczas wysokość drzewa.

Mam nadzieję że to pomoże! I powodzenia z wywiadów!

Odpowiedział 14/09/2011 o 03:17
źródło użytkownik

głosy
0

Aby znaleźć wysokość drzewa, można użyć [czas O (n)] Morris przejścia].

Aby sprawdzić, czy jest to prawidłowy BST, zrobić spacer Inorder drzewa. Przemieszczania tych elementów do tablicy. Sprawdź, czy tablica jest posortowana lub nie do sprawdzania poprawności BST.

Odpowiedział 14/09/2011 o 09:33
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more