轉自: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: