1. 程式人生 > >簡單搜尋(dfs與bfs我的個人理解)

簡單搜尋(dfs與bfs我的個人理解)

說到簡單搜尋,主要就是將以深度優先搜尋和廣度優先搜尋。為什麼要叫深度優先和廣度優先的搜尋呢?
  1. 因為搜尋是建立樹的這種結構上的。無論是深度優先搜尋還是廣度優先搜尋,都是從樹根開始依次向下搜尋。
  2. 這個時候深度優先和廣度優先的區別就出來了。
  3. 很顯然,深度優先是從一個樹根一直搜尋到最底層的子節點然後再回到根進行另外一個子節點的搜尋
比如針對與這個樹我們的深度搜索是從A->B->D然後返回B->E然後返回A->C->F。
  • 我們可以通過棧的思想來進行搜尋,A入棧,B入棧,D入棧然後搜尋,D出棧,E入棧,進行搜尋,E出棧,B出棧,C入棧,F入棧進行搜尋,然後全部出棧。
  • 當然實際上是通過遞迴的操作來實現棧上的搜尋。
  1. 接下來說說廣度優先搜尋
還是借用上圖
  • 廣度優先搜尋顧名思義,以橫向優先,所以我們的搜尋是逐層搜尋。
  • 搜尋順序是A,B->C,D->E->F.
我們實際實現是通過佇列來實現的
  1. 首先,將A入隊,進行搜尋判斷。
  2. 將B,C入隊,A出隊,進行搜尋判斷。
  3. 將D,E,F入隊,B,C出隊進行搜尋判斷。
  4. 清空佇列。

為了避免重複搜尋,我們可以開一個布林陣列,進行判斷是否搜尋。