nivelurile de imprimare de binar de căutare copac

voturi
1

Am o căutare copac clasă structură de date binare care deține nodurile care sunt obiecte în partea din clasa care se comporta ca un arbore binar de căutare.

Clasa este prea lung pentru a posta aici, dar, practic, acest lucru este modul în care funcționează. Dacă vreau să imprimați valoarea superioară a BST, aș spune

print (self._root)

Dacă aș fi vrut să se mute în partea stângă a arborelui (aceeași cu a merge la dreapta, pune doar dreapta în loc de stânga), aș spune

print (self._root._left)

Sper că acest lucru este suficient pentru a putea să mă ajute cu problema mea

Deci, pe problema mea, dacă am un BST cum ar fi:

      6
     / \
    3   8
   / \   \
  1  4   10

Vreau să fie în măsură să imprime:

6

3
8

1
4
10

Am scris o funcție traversare recursiv:

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

Cum vreodată, acest lucru imprimă valorile într-o singură matrice:

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

Cum pot să-l pentru a imprima în modul dorit de mai sus?

Întrebat 19/03/2014 la 14:51
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
0

Optim, vei dori să răspundă la această recursiv. Acest tip de parcurgeri , în special , se numește Latime-întâi. Iată câteva note pe parcurgeri de arbori de căutare binare care ar putea fi de folos, deși acestea sunt în Java.

Aici este de asemenea o întrebare foarte asemănătoare (posibil duplicat), cu toate că, spre deosebire de rezolvare recursivă o soluție este dată folosind bucle.

Publicat 19/03/2014 la 15:08
sursa de către utilizator

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