niveaus afdrukken van Binary Search Tree

stemmen
1

Ik heb een binaire zoekboom datastructuur klasse die knooppunten welke objecten in de zijkant van de klasse die zich gedraagt ​​als een binaire zoekboom zijn bezit.

De klasse is te lang om hier te posten, maar in principe dit is hoe het werkt. Als ik wil naar de top waarde van de bst af te drukken, zou ik zeggen

print (self._root)

Als ik wilde om te verhuizen naar de linkerkant van de boom (hetzelfde met naar rechts, zet rechts in plaats van links), zou ik zeggen

print (self._root._left)

Ik hoop dat dit genoeg zodat je me kan helpen met mijn probleem

Dus op mijn probleem, als ik een bst, zoals:

      6
     / \
    3   8
   / \   \
  1  4   10

Ik wil in staat zijn om uit te printen:

6

3
8

1
4
10

Ik heb een recursieve traverse functie geschreven:

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

Hoe ooit, dit drukt de waarden in een enkele array:

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

Hoe kan ik het aan de manier waarop ik wil boven afdrukken?

De vraag is gesteld op 19/03/2014 om 14:51
bron van user
In andere talen...                            


1 antwoorden

stemmen
0

Optimaal, je gaat te willen om dit recursief te beantwoorden. Dit type van traversal met name wordt genoemd Breedte-First. Hier zijn enkele opmerkingen over traversal van binaire zoekboom die nuttig voor u kunnen zijn, hoewel ze in java.

Hier is ook een zeer gelijkaardig (eventueel dupliceren) vraag, maar in tegenstelling tot het oplossen ervan recursief een oplossing wordt gegeven met behulp van loops.

antwoordde op 19/03/2014 om 15:08
bron van user

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