圖的深度優先遍歷和廣度優先遍歷

原文鏈接:https://www.cnblogs.com/nr-zhang/p/11236369.html

轉自:https://www.cnblogs.com/nr-zhang/p/11236369.html

 

深度優先遍歷簡稱DFS(Depth First Search),廣度優先遍歷簡稱BFS(Breadth First Search),它們是遍歷圖當中所有頂點的兩種方式。

 

我們來到一個遊樂場,遊樂場裏有11個景點。我們從景點0開始,要玩遍遊樂場的所有景點,可以有什麼樣的遊玩次序呢?

深度優先遍歷

二叉樹的前序、中序、後序遍歷,本質上也可以認爲是深度優先遍歷。

第一種是一頭扎到底的玩法。我們選擇一條支路,儘可能不斷地深入,如果遇到死路就往回退,回退過程中如果遇到沒探索過的支路,就進入該支路繼續深入。

 

在圖中,我們首先選擇景點1的這條路,繼續深入到景點4、景點5、景點3、景點6,終於發現走不動了(景點旁邊的數字代表探索次序):

於是,我們退回到景點1,然後探索景點7,景點8,又走到了死衚衕。於是,退回到景點7,探索景點10:

  

按照這個思路,我們再退回到景點1,探索景點9,最後再退回到景點0,後續依次探索景點2,終於玩遍了整個遊樂場:

廣度優先遍歷

二叉樹的層序遍歷,本質上也可以認爲是深度優先遍歷。

在圖中,我們首先探索景點0的相鄰景點1、2、3、4

接着,我們探索與景點0相隔一層的景點7、9、5、6:

最後,我們探索與景點0相隔兩層的景點8、10:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章