DFS(深度優先遍歷)解題思路

2021-09-03 08:31:32 字數 534 閱讀 2576

dfs主要可以用於解決三種問題

1.可達性/連通性問題

leetcode上適用題目:

695 查詢最大的連通面積

200 矩陣中的連通分量數目

547 好友關係的連通分量數目

130 填充封閉區域

417 能到達的太平洋和大西洋的區域

2.排列問題

leetcode上適用題目:

17 數字鍵盤組合

93 ip 位址劃分

79 在矩陣中尋找字串

257 輸出二叉樹中所有從根到葉子的路徑

47 含有相同元素求排列

3.組合問題

leetcode上適用題目:

77 組合

39 組合求和

40 含有相同元素的求組合求和

216 1-9 數字的組合求和

78 子集

90 含有相同元素求子集

131 分割字串使得每個部分都是回文數

深度優先遍歷DFS

本文章 中的圖用鄰接矩陣來表示,所以演算法複雜度為o v 2 如果用鄰接表來表示,那麼演算法的複雜度為o v e dfs可用來判斷圖中是否有環,展現無向圖中的連通分支。通過dfs,形成乙個由多棵深度優先樹所組成的深度優先森林。將原先圖中的邊新增到該森林之後,可以將所有邊定義為以下四類 1.樹邊 森林...

深度優先遍歷(DFS)

深度優先搜尋是一種列舉所有完整路徑以遍歷所有情況的搜尋方法。使用遞迴可以很好的實現深度優先遍歷,因此,只能說遞迴是實現深度優先遍歷的一種實現方式。給定乙個序列,列舉這個序列所有的子串行 例如子串行包含,選擇最優子串行,使它的某個特徵是所有子串行中最優的。這個問題也就是從n個整數中,選擇k個數的所有方...

如何實現深度優先遍歷(DFS)

dfs實現步驟如下 訪問頂點v,並標記v已經訪問 查詢v的第乙個鄰接頂點w 若w存在,則繼續執行,否則演算法結束 若w未被訪問,則使用dfs遞迴訪問w 查詢v的下乙個鄰接節點,並記為w,轉到步驟 對上圖進行dfs,則訪問順序為 a b d c e 使用偽 如下 vector g maxn int v...