J'ai donc réussi à construire ma méthode code> String CODE> pour pouvoir imprimer les éléments de mon arborescence binaire, mais le problème est que je veux imprimer tout l'arbre binaire comme em> 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 code> string code> qui nécessite une réparation. Le code lié est avec la liste globale l1 code>. P>
3 Réponses :
Au lieu d'utiliser la variable globale pour accumuler le résultat, vous pouvez Voir la méthode renvoyer code> les nœuds des appels récursifs et accumuler dans la méthode d'appelage.
traverser code> que j'ai définie. Cela fait une traversée dans l'ordre de l'arbre. La méthode
string () code> devient le
str () code> du résultat renvoyé par
traverse () code>. P>
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 code> pour renvoyer un
str code>. Il est facultatif en ce qui concerne la fonctionnalité
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
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 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> __ len __ code> ci-dessous:
Importer SYS CODE> LI>
Fonction code> modifié pour obtenir des caractères du fichier. LI>
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)