對樹形結構資料進行廣度優先 深度優先遍歷

2021-09-07 06:15:50 字數 1330 閱讀 5999

今日被問到如何對乙個普通的形結構資料進行遍歷,並且分別用廣度優先,深度優先遍歷,想了一會,深度優先是非常簡單的,使用遞迴幾行**就搞定,但是廣度優先呢,想了一會沒說出來,回來用eclipse寫了一會,終於出來了

public class node

public static void main(string args)

/*** 深度優先

* * @param node

* @param level

*/static void print(node node) }}

/*** 廣度優先

* * @param root

* @param node

* @param level

*/static void print2(node root, node node, int level)

print3(root, 1, level);

if (!node.children.isempty()) }}

static void print3(node node, int start, int level)

} else }}

}}輸出結果如下:

深度優先ab

cc1c11c12c2d

d1d2

-----------------------

廣度優先ab

cdc1c2

d1d2

c11c12

廣度優先感覺實現是實現了,但是效率比較低,每次為了輸出第n層,n層前面的每一層都經過了遍歷,不知是否還有更好的辦法?

今天折騰了一會,寫了乙個感覺更好的廣度優先實現:

把上面main()中的print2(***)換成print5(root);

/*** 廣度優先 —— 法2

* * @param node

*/static void print5(node node)

list = getnextlevelnode(list);

} while (list != null);

}static listgetnextlevelnode(listnodelist)

return list;

}return null;}

輸出結果一樣:

-----------------------

廣度優先bc

dc1c2d1

d2c11

c12

資料結構 廣度優先搜尋

實驗任務 眾所周知,索隆是乙個路痴,一天在一小島上,他又迷路了!好 山治心急如焚,決定出去找他,由於練成了月步,山治的速度竟然達到了正無窮!小島上除了空地,還有盤 絲洞 簡稱 psd 盤絲洞裡住著可愛的妹紙,山治每次經過乙個盤絲洞,都要停留乙個單 位時間來欣賞妹紙,給你乙個 n m 的地圖以及山治和...

廣度優先搜尋 資料結構

廣度優先搜尋 bfs 的乙個常見應用是找出從根結點到目標結點的最短路徑。結點的處理順序是越是接近根結點的結點將越早地遍歷。佇列的入隊和出隊順序是新新增的節點不會立即遍歷,而是在下一輪中處理。結點的處理順序與它們新增到佇列的順序是完全相同的順序,即先進先出 fifo 這就是我們在 bfs 中使用佇列的...

資料結構與演算法學習總結 深度優先和廣度優先搜尋

圖上的搜尋演算法就是從乙個頂點出發找到到另乙個頂點的路徑 演算法是作用於資料結構之上的,深度優先搜尋演算法和廣度優先搜尋演算法都是基於圖的 深度優先搜尋演算法和廣度優先搜尋演算法既可以作用於有向圖也可以作用於無向圖 深度優先搜尋演算法和廣度優先搜尋演算法是一種暴力搜尋演算法,僅適用於圖不大的搜尋 先...