Hladiny tisk strom binárního vyhledávání

hlasů
1

Mám binární vyhledávací strom třídu datové struktury, které drží uzly, které jsou objekty na straně třída, která se chová jako binární vyhledávací strom.

Třída je příliš dlouhý, aby post tady, ale v podstatě je to, jak to funguje. Chci-li tisknout na horní hodnotu BST, řekl bych,

print (self._root)

Kdybych chtěl přejít na levé straně stromu (stejné s jít na pravé straně, stačí dát doprava místo doleva), řekl bych,

print (self._root._left)

Doufám, že to je dost na to, že mi může pomoci s mým problémem

Takže na můj problém, když mám BST, jako jsou:

      6
     / \
    3   8
   / \   \
  1  4   10

Chci, aby bylo možné vytisknout:

6

3
8

1
4
10

Napsal jsem rekurzivní funkce pojezdu:

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 se vůbec, to tiskne hodnoty v jednom poli:

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

Jak ji mohu získat tisknout tak, jak chci výše?

Položena 19/03/2014 v 14:51
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

V optimálním případě budete chtít odpovědět rekurzivně. Tento typ průchod zejména se nazývá Šířka-First. Zde jsou některé poznámky o průchod binárních vyhledávacích stromů, které by mohly být užitečné pro vás, i když jsou v Javě.

Zde je také velmi podobný (pravděpodobně duplicitní) otázka, ačkoli jak protichůdný k jeho vyřešení rekurzivně řešení je dána pomocí smyček.

Odpovězeno 19/03/2014 v 15:08
zdroj uživatelem

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