假設給定圖G的初態是全部頂點均不曾訪問過。在G中任選一頂點v爲初始出發點(源點),則深度優先遍歷可定義以下:首先訪問出發點v,並將其標記爲已訪問過;而後依次從v出發搜索v的每一個鄰接點w。若w不曾訪問過,則以w爲新的出發點繼續進行深度優先遍歷,直至圖中全部和源點v有路徑相通的頂點(亦稱爲從源點可達的頂點)均已被訪問爲止。若此時圖中仍有未訪問的頂點,則另選一個還沒有訪問的頂點做爲新的源點重複上述過程,直至圖中全部頂點均已被訪問爲止。
圖的深度優先遍歷相似於樹的前序遍歷。採用的搜索方法的特色是儘量先對縱深方向進行搜索。這種搜索方法稱爲深度優先搜索(Depth-First Search)。相應地,用此方法遍歷圖就很天然地稱之爲圖的深度優先遍歷。html
說白了深度優先遍歷就是一種不撞南牆不會頭的算法,他會把一條路走完以後再回溯到有分叉的節點繼續遍歷。
如圖:
算法
遍歷結果 01463725
例題:數據結構實驗之圖論二:圖的深度遍歷數據結構
例題:數據結構實驗之圖論一:基於鄰接矩陣的廣度優先搜索遍歷3d