-1
votes

Comment modifier ma méthode pour imprimer la chaîne entière au lieu d'un seul élément de mon arbre binaire?

J'ai donc réussi à construire ma méthode String pour pouvoir imprimer les éléments de mon arborescence binaire, mais le problème est que je veux imprimer tout l'arbre binaire comme chaîne pas les éléments séparés. Ma tentative crée une liste qui ajoute les éléments, puis imprime simplement la liste.

Lorsque j'essaye cette approche, le problème est que lorsque vous obtenez les éléments de l'arborescence de l'arborescence de l'arborescence de l'arborescence, la liste n'imprime que l'élément le plus récent, c'est-à-dire la longueur = 1. Lorsque j'ai essayé de créer la liste globale, tout va bien mais I OFC souhaite éviter les variables globales . Je vais relier le code entier mais spécifiquement sa méthode string qui nécessite une réparation. Le code lié est avec la liste globale l1 . xxx


0 commentaires

3 Réponses :


0
votes

Au lieu d'utiliser la variable globale pour accumuler le résultat, vous pouvez renvoyer les nœuds des appels récursifs et accumuler dans la méthode d'appelage.

Voir la méthode traverser que j'ai définie. Cela fait une traversée dans l'ordre de l'arbre. La méthode string () devient le str () du résultat renvoyé par traverse () . xxx < / pré>


2 commentaires

Très bien merci, cependant est la fonction Str (Self.Traverse) de la liste réellement nécessaire dans la méthode de la chaîne? Je peux simplement utiliser la méthode Traverse et imprimer le retour pour la liste trop droite?


Ajouté depuis que vous attendez une méthode appelée chaîne pour renvoyer un str . Il est facultatif en ce qui concerne la fonctionnalité



0
votes

Vous pouvez utiliser votre code d'origine uniquement une petite modification de la chaîne de méthode.

doit ajouter la liste 'LL' comme paramètre par défaut et le passé sur les appels récursifs comme suit. P>

  def string(self, ll = []):
        '''Prints the entire tree as a string.'''
        #current = self._root
        if self._left:
            self._left.string(ll)
        #print(self._root)
        ll.append(self._root)
        if self._right:
            self._right.string(ll)
        return ll


0 commentaires

0
votes

Vous pouvez simplifier votre méthode code> chaîne code> en incorporant l'itération dans votre classe. Si une telle technique est utilisée, le calcul de la taille de la structure peut également utiliser la fonctionnalité, comme indiqué dans la méthode __ len __ code> ci-dessous: xxx pré>

pour un plus intéressant Test de l'arbre binaire, vous pouvez lire chaque caractère dans le fichier source et ajouter cela à la structure. Trois articles peuvent être ajoutés au code pour accomplir ceci: p>

  1. Importer SYS CODE> LI>
  2. A Fonction code> modifié pour obtenir des caractères du fichier. LI>
  3. une méthode code> mise à jour code> pouvant aider à manipuler des objets itables. Li> OL>
    import sys
    
    
    def main():
        test = Node()
        with open(sys.argv[0]) as file:
            test.update(character for line in file for character in line)
        print(test)
        print('There are', len(test), 'unique characters in this file.')
    
    
    class Node:
    
        def update(self, iterable):
            """Takes all items from an iterable and adds them to the tree."""
            for item in iterable:
                self.add(item)
    


0 commentaires