中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java圖的遍歷怎么理解

發布時間:2021-12-08 14:00:41 來源:億速云 閱讀:129 作者:iii 欄目:大數據

這篇文章主要介紹“Java圖的遍歷怎么理解”,在日常操作中,相信很多人在Java圖的遍歷怎么理解問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java圖的遍歷怎么理解”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

圖的遍歷跟樹的遍歷一樣,從圖中一點出發遍歷圖中其余頂點,且使每一個頂點僅被訪問一次 叫 Traversing Graph

depth first search  DFS  深度優先遍歷  深度優先搜索     類似與Tree中 前序遍歷

具體算法表述如下:

  1. 訪問初始結點v,并標記結點v為已訪問。

  2. 查找結點v的第一個鄰接結點w。

  3. 若w存在,則繼續執行4,否則算法結束。

  4. 若w未被訪問,對w進行深度優先遍歷遞歸(即把w當做另一個v,然后進行步驟123)。

  5. 查找結點v的w鄰接結點的下一個鄰接結點,轉到步驟3。

例如下圖,其深度優先遍歷順序為 1->2->4->8->5->3->6->7

Java圖的遍歷怎么理解

bool visited[MAX];//初始化全為false

鄰接矩陣 深度優化遞歸 因為邊存在1才能訪問
// 遞歸法
void DFS(MGraph G, int i)//從第i個開始遍歷
{
	visited[i] = true;
	cout<<G.VexArr[i];
	for(int j=0;j<G.numV;j++)
	{
		if(G.arc[i][j] == 1 && ! visited[j])
		{
			DFS(G,j);
		}
	}
}
void DFSTraverse(MGraph G) //鄰接矩陣深度遍歷操作
{
	for(int i=0;i<G.numV;j++)
	{
		visited[i] = false;
	}
	for(int i=0;i<G.numV;i++)
	{
		if(! visited[i])//對未訪問過的頂點調用DFS, 如果是連通圖則上面的for循環只執行一次就
		{
			DFS(G,i);
		}
	}
}


鄰接表

bool visited[MAX];//初始化全為false

鄰接表 深度優化遞歸 
// 遞歸法
void DFS(GraphList G, int i)//從第i個開始遍歷
{
	visited[i] = true;
	EdgeNode *p = NULL;
	cout << G.adjlist[i].data;//輸出 剛剛遍歷的那個節點
	p = G->adjlist[i].firstedge;//p指向 鄰接表的首地址
	while(p)
	{
		if(!visited[p->adjvex])
		{
			DFS(G, p->adjvex);
		}
		p = p->next;
	}
}
void DFSTraverse(GraphList G) //鄰接矩陣深度遍歷操作
{
	for(int i=0;i<G.numV;j++)
	{
		visited[i] = false;
	}
	for(int i=0;i<G.numV;i++)
	{
		if(! visited[i])//對未訪問過的頂點調用DFS, 如果是連通圖則上面的for循環只執行一次就
		{
			DFS(G,i);
		}
	}
}

對于n個頂點e個邊的圖來說  鄰接矩陣遍歷時間復雜度為O(n^2);  而鄰接表復雜度為O(n+e);  對于有向圖而言只是在對通道存在可行或者不可行,基本算法上差別不太大

到此,關于“Java圖的遍歷怎么理解”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿城市| 龙川县| 晋江市| 桐梓县| 达拉特旗| 中阳县| 克拉玛依市| 思南县| 通化市| 称多县| 望谟县| 泗水县| 古交市| 来宾市| 庄河市| 双桥区| 通榆县| 梁山县| 绵阳市| 涞水县| 广饶县| 瓮安县| 故城县| 青浦区| 炎陵县| 滨州市| 平果县| 平乐县| 西畴县| 拉孜县| 龙陵县| 中阳县| 搜索| 石阡县| 枣庄市| 东明县| 灵丘县| 巴马| 黄冈市| 静安区| 宝坻区|