【算法分析与设计】DFS与BFS的区别
生活随笔
收集整理的這篇文章主要介紹了
【算法分析与设计】DFS与BFS的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
廣度優先遍歷(BFS)算法先訪問所有最近的子結點,然后再向下訪問。
深度優先遍歷(DFS)算法先沿著一條路不斷向下訪問,然后再訪問同級結點。
從基本的定義和實現思路上看,DFS和BFS都是遞歸的。
BFS和DFS都有其非遞歸的實現方法,但需要借助線性數據結構。其中,BFS往往使用FIFO的隊列作為輔助結構,而DFS往往使用LIFO的棧作為輔助結構。
二叉樹基本算法中的前序遍歷、中序遍歷、后序遍歷都是DFS,而層序遍歷則是BFS。
圖的鄰接表和鄰接矩陣實現也分別有其對應的BFS和DFS實現。
DFS和BFS的用途遠不止用于樹和圖,其實很多搜索算法問題都使用到了DFS或BFS,當然,也許DP會更優化一些QAQ
如果覺得對這方面掌握的不是很好,建議先借助樹和圖掌握DFS和BFS的基本套路,再去刷題:
- 洛谷-搜索題單
- 力扣-DFS專題
- 力扣-BFS專題
總結
以上是生活随笔為你收集整理的【算法分析与设计】DFS与BFS的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 获奖者:舒继武,男,清华大学计算机系教授
- 下一篇: Asp.Net数据库编程-10条最优方法