je la table de données suivantes:Python itératives Profondeur Première recherche de la table
child_pid parent_pid
1 -1
2 1
6 -1
7 6
8 7
9 8
21 -1
22 21
24 -1
25 24
26 25
27 26
28 27
29 28
99 6
107 99
108 -1
109 108
222 109
1000 7
1001 1000
Je veux écrire un python en profondeur d'abord itérative recherche qui génère le résultat suivant:
('final: ',
[[u'1', u'2'],
[u'6', u'7', u'8', u'9'],
[u'6', u'7', u'1000', u'1001'],
[u'6', u'99', u'107'],
[u'21', u'22'],
[u'24', u'25', u'26', u'27', u'28', u'29'],
[u'108', u'109', u'222']])
ci-dessus la sortie a été générée en utilisant une approche récursive. Nous pouvons voir que toutes les relations enfant/parent sont préservées de manière appropriée.
J'ai utilisé la logique suivante d'un autre tutoriel dans ma tentative de tirer une approche itérative:
def dfs_iterative(graph, start):
stack, path = [start], []
while stack:
vertex = stack.pop()
if vertex in path:
continue
path.append(vertex)
for neighbor in graph[vertex]:
stack.append(neighbor)
return path
qui se traduit par:
('final: ',
[[u'1', u'2'],
[u'6', u'99', u'107', u'7', u'1000', u'1001', u'8', u'9'],
[u'21', u'22'],
[u'24', u'25', u'26', u'27', u'28', u'29'],
[u'108', u'109', u'222']])
Nous pouvons voir que les résultats sont presque identiques sauf lorsqu'un noeud a plus d'un enfant. Plus précisément, le nœud 6 a les relations suivantes:
6->7->8->9
6->7->1000->1001
6->99->107
Dans la sortie récursive ci-dessus, on voit que le noeud 6 est convenablement réparti en ses relations de bon chemin. Dans ma tentative itérative, tous les «descendants» du nœud 6 sont regroupés dans une liste. Vous cherchez un moyen de générer la sortie récursive, mais avec une approche itérative en python. Pensées? J'apprécie l'aide!
[Exemple minimal, complet, vérifiable] (http://stackoverflow.com/help/mcve) s'applique ici. Nous ne pouvons pas vous aider efficacement tant que vous n'affichez pas votre code MCVE.Nous avons besoin au moins du programme pilote (configuration des données et séquence d'appel). Le fragment de code que vous avez publié ne produit aucune sortie. encore moins ce que vous avez fourni. – Prune