第一步:從開始節點查詢可達節點,如果有沒到過的可達節點則第二部,否則第三步
第二部:便利到下乙個可達節點,記錄下該節點已經到達節點
第三步:回到上一步的節點再從第一步開始
乙個節點對應他的可達節點用map表示,map的key和value分別是integer和list(用來存放key對應的節點)
遍歷過的節點同樣用map表示,key為到過的節點,value是布林值,每到過乙個節點map就新增乙個key和value來表示該節點已經遍歷過
public class 深度優先查詢
private static void visit(hashmap> graph, hashmapvisited, integer start)
}system.out.println("離開節點"+start);}}
public static void main(string args)
}
參考客 深度優先遍歷 廣度優先遍歷
用棧進行儲存元素。訪問頂點 頂點入棧,以便記住它 標記頂點,以便不會再訪問它 2 訪問規則 a.如果可能,訪問乙個鄰接的未訪問頂點,標記它,併入棧。b.當不能執行a時 沒有鄰接的未訪問頂點 如果棧不為空,就從棧中彈出乙個頂點。c.如果不能執行規則a和b,就完成了整個搜尋過程。3 實現 基於以上規則,...
深度優先遍歷
深度優先遍歷很容易列出所有可能 這裡我們分情況 標註幾個易錯的點 不重複組合 不重複組合 則表明 如果我們取k 3 取n1 n2 n3 則n1從1 9中任取 但n1需要排除n1 同理n3需要排除n1 n2 如下 public static void dfs3 int start,listnums,l...
深度優先遍歷 和 廣度優先遍歷
圖的廣度優先搜尋是樹的按層次遍歷的推廣,它的基本思想是 首先訪問初始點vi,並將其標記為已訪問過,接著訪問vi的所有未被訪問過的鄰接點 vi1,vi2,vi t,並均標記已訪問過,然後再按照vi1,vi2,vi t的次序,訪問每乙個頂點的所有未被訪問過的鄰接點,並均標記為已訪問過,依次類推,直到圖中...