web-dev-qa-db-fra.com

La traversée en précommande sur un arbre binaire est-elle la même que la recherche en profondeur en premier?

Il me semble que la traversée en pré-ordre et DFS sont les mêmes que dans les deux cas que nous traversons jusqu'au nœud feuille de manière approfondie. Quelqu'un pourrait-il me corriger si je me trompe?

Merci d'avance!

23
Srikanth Kandalam

La précommande est un type de DFS.

Il existe trois types de traversée en profondeur d'abord: pré-ordre, dans l'ordre et post-ordre.

Consultez ici pour plus d'informations.

49
herohuyongtao

Ce ne sera pas le cas. La précommande a une façon stricte de visiter le nœud gauche puis le nœud droit. Mais pour DFS, cela peut être soit car il n'y a pas de mode stricte. Ainsi, plusieurs traversées existent en fonction de ce que vous poussez sur la pile.

5
lU5er

Cela dépend probablement de la définition et de la mise en œuvre de l'algorithme de profondeur d'abord. La classe DefaultMutableTreeNode du composant Java JTree de Swing a les méthodes d'énumération suivantes utilisées pour la traversée de l'arborescence:

  • depthFirstEnumeration ()
  • postorderEnumeration ()
  • preorderEnumeration ()
  • painthFirstEnumeration ()

Dans Java Implémentation de Swing, le depthFirstEnumeration est le même que le postOrderEnumeration. Mes tests et le documentation officielle le confirment.

D'autres peuvent définir ce que la profondeur d'abord signifie différemment. Par exemple, un article sur Wikipedia déclare que les traversées pré-commande et post-commande sont des types spécifiques d'une traversée en profondeur d'abord. Cela signifierait que la traversée en profondeur d'abord n'est pas un algorithme de traversée concret.

5
Jan Bodnar

Intuitivement, ils ressentent la même chose en raison de la façon dont nous appliquons l'algorithme DFS en utilisant la récursivité (c'est-à-dire en utilisant une structure de données de pile implicite) dans la plupart des implémentations. Dans la plupart des cas (ou tous), les résultats sont les mêmes que pour une traversée en précommande.

L'idée de DFS est de choisir une branche et d'approfondir cela , de l'explorer complètement. Alors que la façon de choisir la branche et de descendre est déterminée par le type de DFS vous mettez en œuvre. Dans un souci d'achèvement, dans l'algorithme BFS, nous parcourons les niveaux .

Rappelez-vous, la précommande est juste un type de DFS. Nous avons également d'autres méthodes qui sont indiquées ci-dessous.

notes on dfs

Source de l'image: Base CS

Pour une meilleure compréhension, reportez-vous à ce blog ou même celui-ci .

0
Amitrajit Bose