2016-11-01 4 views
-1

Ich verstehe das Konzept der Tiefensuche zuerst, wenn es darum geht, Bäume zu überqueren. Aber ich habe es schwer, dfs auf anderen Datenstrukturen (Arrays, 2D-Arrays, etc.) durchzuführen. Wie kann man am besten darüber nachdenken?Wie funktioniert DFS für nicht Bäume?

+0

Versuchen Sie, das Array selbst als Baum zu visualisieren? – CyprUS

Antwort

0

Die Tiefensuche (DFS) wird normalerweise an Bäumen demonstriert. Jetzt, wie Sie die Bäume implementieren, ist Ihr Anruf. Sie können unter Verwendung von Arrays, verkettete Listen Adjazenzmatrix etc. Der beste Weg ist, zu verstehen, implementieren ein zu implementieren, sind hier einige Implementierungen, die helfen können:

  1. DFS on an array
  2. DFS and BFS using Linked List
0

Die DFS erstellt eine virtuelle Struktur in jeder Struktur, auf die Sie es anwenden. Dieser Baum ist als spanning tree der Struktur bekannt. Sie existieren für Graphen, Digraphen und sogar Arrays oder andere Strukturen, die von einem DFS besucht werden können.

spanning tree of a grid graph

Natürlich wird es viele Kanten, die nicht auf dem Baum ist. In ungerichteten Graphen und Strukturen sind sie immer "Hinterkanten" (die von einem Kindknoten zu einem Vorfahrknoten gehen), aber bei Strukturen, bei denen die Kanten eine bestimmte Ausrichtung haben können, können sie Vorwärtskanten sein (die auf nicht besuchte Nachfahren zeigen) Knoten) oder Kreuzkanten (die verschiedene Teilbäume kreuzen).

spanning tree