livelli di stampa di Binary Search Albero

voti
1

Ho un binario di ricerca albero di classe di struttura di dati che contiene i nodi che sono oggetti sul lato della classe che si comporta come un albero binario di ricerca.

La classe è troppo lungo per postare qui, ma in fondo è così che funziona. Se voglio stampare il valore superiore del BST, direi

print (self._root)

Se avessi voluto spostarsi verso il lato sinistro dell'albero (stesso con di andare a destra, appena messo a destra invece che a sinistra), direi

print (self._root._left)

Spero che questo sia abbastanza così mi potete aiutare con il mio problema

Quindi sul mio problema, se ho una BST come:

      6
     / \
    3   8
   / \   \
  1  4   10

Voglio essere in grado di stampare:

6

3
8

1
4
10

Ho scritto una funzione ricorsiva traverse:

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

Come sempre, questo stampa i valori in un singolo array:

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

Come posso ottenere per stampare il modo in cui voglio di cui sopra?

È pubblicato 19/03/2014 alle 14:51
fonte dall'utente
In altre lingue...                            


1 risposte

voti
0

In modo ottimale, si sta andando a voler rispondere a questa in modo ricorsivo. Questo tipo di attraversamento in particolare è chiamato in ampiezza. Qui ci sono alcune note su attraversamento di alberi binari di ricerca che potrebbero essere utili a te, anche se sono in java.

Qui è anche una molto simile (forse duplicate) domanda, anche se al contrario di risolverlo in modo ricorsivo una soluzione è dato usando i loop.

Risposto il 19/03/2014 a 15:08
fonte dall'utente

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