Poziomy drukarskich binarne drzewo poszukiwań

głosy
1

Mam binarne drzewo poszukiwań klasy struktury danych, która przechowuje węzły, które są obiekty w stronę klasy, który działa jak wyszukiwaniu binarnym drzewie.

Klasa jest zbyt długi, aby pisać tutaj, ale w zasadzie jest to w jaki sposób to działa. Jeśli chcę wydrukować górną wartość BST, powiedziałbym,

print (self._root)

Gdybym chciał przenieść się z lewej strony drzewa (tak samo z iść na prawo, wystarczy umieścić w prawo zamiast w lewo), powiedziałbym,

print (self._root._left)

Mam nadzieję, że to wystarczy, więc możesz mi pomóc z moim problemem

Więc na mój problem, jeśli mam BST, takie jak:

      6
     / \
    3   8
   / \   \
  1  4   10

Chcę, aby móc wydrukować:

6

3
8

1
4
10

Pisałem rekurencyjnej funkcji przemieszczenia:

def traverse(self):

        a = []
        self._traverse_aux(self._root, a)   
        return a

def _traverse_aux(self, node, a):

        if node is not None:
            self._traverse_aux(node._left, a)
            a.append(node._value)
            self._traverse_aux(node._right, a)
        return

Jak zawsze, to drukuje wartości w jednej tablicy:

[1, 3, 4, 6, 8, 10]

Jak mogę je wydrukować sposób chcę powyżej?

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


1 odpowiedzi

głosy
0

Optymalnie, będziesz chciał odpowiedzieć na to rekurencyjnie. Ten rodzaj przechodzenia w szczególności nazywa wszerz. Oto kilka notatek na przechodzenie z binarne drzewo poszukiwań, które mogą być użyteczne dla was, choć są w Javie.

Tutaj jest również bardzo podobne (ewentualnie duplikat) pytanie, choć w przeciwieństwie do rozwiązania go rekurencyjnie rozwiązanie jest podany za pomocą pętli.

Odpowiedział 19/03/2014 o 15:08
źródło użytkownik

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