1. 程式人生 > >關於使用DFS,BFS的一些思考總結

關於使用DFS,BFS的一些思考總結

總的來說,DFS和BFS是一種遍歷策略,整體執行的框架是固定的,但是具體處理以及函式的形參是需要根據具體問題具體來定的。

也就是說,在BFS或者DFS的時候,首先需要搞明白的是:遍歷的目的是什麼。

  • 標記結點已經訪問(任何題目中必須有)
  • 遍歷過程中計算引數(選擇)

計算引數是比較常見的題目,只標記結點是否訪問在計算連通塊個數時總結過。

詳細說一下計算引數問題。

可以在形參中用引數引用,直接改變這個引數就等同於計算,因為外面可以感受到變化,DFS用的較多,因為DFS是遞迴處理。

或者定義全域性變數,函式執行直接改變,這個才BFS更多用,因為BFS是迴圈處理。

DFS用起來仍然需要從遞迴函式的寫法上多加註意,即注意:

  • 遞迴邊界
  • 當前層的邏輯處理
  • 遞迴式的寫法