1.無向圖
並查集:檢查每一條邊的兩個端點是否是相同的連通子圖,如果是相同的,說明存在環;
深度遍歷:使用鄰接矩陣,只需要用一個數組標記是否訪問過,如果訪問過且不是該節點的父節點,則有環;
廣度優先:可以;
2.有向圖
拓撲排序:用一個隊列記錄入度為0的點,然后將他們去除時,另邊的另一頭節點的入度減一,不斷記錄入度為0的點,若最后沒有入度不為0的點,則沒有環,否則有環;不斷的插入隊尾,循環;
深度遍歷:和無向圖不同的是,我們不能直接和無向圖的深度遍歷一樣,因為有可能出現,一個節點同時是2個節點的孩子節點,但這個時候不是環,所以需要去除標記,或者使用三種標記:0代表節點沒有訪問過,-1代表節點被訪問過一次,但它還有孩子節點未被訪問完,1代表該節點的深度遍歷已經結束;這種方法比較巧妙,不需要去除標記;
廣度優先:不可以,深度優先記錄的是經過的路徑,環出現在經過的路徑上;