Im en utilisant un arbre binaire décrit dans ce livre problem solving with algorithms and data structurespython retournant une liste à partir d'une méthode récursive
class BinaryTree:
def __init__(self,rootObj):
self.key = rootObj
self.leftChild = None
self.rightChild = None
Il existe déjà une méthode de pré-commande défini traversal comme suit.
def preorder(tree):
if tree:
print(tree.self.key)
preorder(tree.getLeftChild())
preorder(tree.getRightChild())
Je veux juste ajouter une valeur de retour de la liste des nœuds visités. Donc, je peux faire quelque chose comme
for i in preorder(tree):
etc...
J'ai du mal à retourner une liste d'une méthode récursive. La récursion arrête dès qu'elle touche le « retour » que j'ai essayé d'utiliser les variations
return [tree.self.key] + preorder()
Ou
yield ...
Toutes les idées?
Quelle erreur obtenez-vous? Est-ce quelque chose à propos de la concaténation de None et de la liste? – YXD
1). Il semble que 'preorder()' soit une fonction d'assistance et non une méthode de la classe 'BinaryTree', donc l'appeler une méthode est un peu confus. 2). Si 'tree' est une instance de' BinaryTree', alors 'tree.self.key' est faux. 3). En Python, vous avez rarement besoin de méthodes getter (ou setter), vous accédez directement aux attributs. Par exemple, 'preorder (tree.leftChild)'. –