java常用演算法之深度優先遍歷

2021-08-16 22:54:21 字數 1473 閱讀 6215

深度優先遍歷是圖的一種遍歷方式,當然也可以用在對樹的遍歷,類似於樹的先序遍歷,是先序遍歷的推廣

深度優先遍歷思想:

1.使用圖的鄰接矩陣的儲存方式來儲存圖中每個節點之間的對應關係

2.使用乙個標記陣列來標記圖中的節點是否被訪問過

3.判斷節點之間是否有聯絡

4.若有聯絡,比如i   j   之間的有聯絡,就遞迴的再次訪問 j  節點是否跟其他節點之間有關係

5.重複 3  4  步驟

深度優先遍歷演算法:

//深度優先搜尋和廣度優先搜尋

//使用圖中鄰接矩陣的儲存結構來儲存

public class img

//初始化節點之間的關係,初始化放在構造方法中

public

img(int n)

//初始化節點是否被訪問

isflag[i] = false;

} }

//設定節點之間的關係

public void

setpointrelative(int i,int j)

//設定節點之間的節點關係為連線狀態

imgrelative[i][j] = 1

;imgrelative[j][i] = 1;}

//從某個節點開始進行深度優先遍歷

public void

dfsfrompoint(int i)}}

//對圖中的資訊進行深度優先遍歷

public void

dfs()}}

public static void

main(string a);

img.setimgmessage(message);

img.setpointrelative(0

, 1);

img.setpointrelative(0

, 2);

img.setpointrelative(1

, 3);

img.setpointrelative(1

, 4);

img.setpointrelative(3

, 7);

img.setpointrelative(4

, 7);

img.setpointrelative(2

, 5);

img.setpointrelative(2

, 6);

img.setpointrelative(5

, 6);

system.out

.println("深度優先遍歷結果:");

img.dfs();

}}

樹遍歷演算法之深度優先和廣度優先

前兩天看到乙個阿里面試題 關於dfs 和bfs的演算法題,在網上找了很多,沒確切答案。今天我們一起來做下這個題目 題目 實現乙個深度優先搜尋演算法 要求 不能用遞迴 var tree var node dfs bfs tree,西寧市 console.log node 輸出 複製 題目要求非遞迴方式...

DOM深度優先遍歷演算法

通過深度優先遍歷演算法,可以依次獲取每個後代節點的物件。順序 有子元素先獲取子元素,再獲取兄弟元素 主要有2步驟 1.建立節點迭代器物件 parent是要遍歷的節點 var iterator document.createnodeiterator parent,nodefilter.show ele...

樹之深度優先遍歷

直接貼 只需要修改中間列印的位置,放在最前面就是先序遍歷,放在中間,就是中序遍歷,放在後面就是後序遍歷 貼 public class main public static void initnode node head public static void printf node node clas...