niveaux d'impression de Binary Recherche Arbre

voix
1

J'ai une classe de structure de données d'arbre de recherche binaire contenant des nœuds qui sont des objets du côté de la classe qui agit comme un arbre de recherche binaire.

La classe est trop longue pour poster ici, mais au fond, voici comment cela fonctionne. Si je veux imprimer la valeur supérieure de la bst, je dirais

print (self._root)

Si je voulais passer sur le côté gauche de l'arbre (même avec aller à droite, il suffit de mettre à droite au lieu de gauche), je dirais

print (self._root._left)

J'espère que cela est suffisant pour que vous puissiez me aider avec mon problème

Donc, sur mon problème, si j'ai un bst comme:

      6
     / \
    3   8
   / \   \
  1  4   10

Je veux être en mesure d'imprimer:

6

3
8

1
4
10

J'ai écrit une fonction de déplacement récursif:

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

Comment jamais, ce imprime les valeurs dans un seul tableau:

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

Comment puis-je obtenir pour imprimer la façon dont je veux ci-dessus?

Créé 19/03/2014 à 14:51
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Idéalement, vous allez vouloir répondre à cette récursive. Ce type de traversal en particulier est appelée en largeur. Voici quelques notes sur des traversal arbres binaires de recherche qui pourraient vous être utiles, bien qu'ils soient en java.

Voici est également une question très similaire (éventuellement en double), même si , par opposition à la résolution récursivement une solution est donnée à l' aide de boucles.

Créé 19/03/2014 à 15:08
source utilisateur

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