2014-02-05 52 views

回答

32

預購是一種類型的DFS。

深度優先遍歷有三種類型:預定序,有序序和後序。

查看here瞭解更多信息。

+1

在我看來,這個問題並不是尋求先進的方法,我認爲他正在尋找預訂DFS,這是常見的計算機主要學生稱爲「DFS」爲短期。 –

+0

我認爲他已經簡單地觀察到,當所討論的圖也是樹時,DFS的初始頂點是樹的根,那麼DFS和預序遍歷是等價的。有序遍歷對k> 2的k-tree樹沒有任何意義。 – Dave

+0

即使圖是一棵二叉樹,前序樹遍歷的輸出也不可能和前一子樹的遍歷相同,除非頂點鄰接列表按照與樹中節點「子」相同的順序一致列舉。這是圖表表示沒有「左」和「右」兒童的概念。 – Dave

4

它可能取決於深度優先算法的定義和實現。該DefaultMutableTreeNode類的Java Swing的JTree的 組件具有用於樹遍歷以下列舉的方法:

  • depthFirstEnumeration()
  • postorderEnumeration()
  • preorderEnumeration()
  • breadthFirstEnumeration()

在Java Swing的實現中,depthFirstEnumeration與是相同的。我的測試和official documentation 證實了這一點。

其他人可以定義不同深度優先的含義。例如,Wikipedia上的文章 指出,預先遍歷和後序遍歷是深度優先遍歷的特定類型 。這意味着深度優先遍歷 不是一個具體的遍歷算法。

4

它不會。預訂有嚴格的訪問左節點和右節點的方式。但對於DFS來說,它可以是沒有嚴格的時尚。因此,基於堆棧上的內容,存在多個遍歷。