dfs——练习demo3(20届周新杰提供)
對此二維數(shù)組進行深度搜索與廣度搜索,并遍歷結果。
static int[][] nums = { { 0 , 1 , 0 , 0 , 0 , 0 , 0, 1 , 0},{ 1 , 0, 1 ,0 , 1 , 0 , 0 , 0 , 0},{ 0 , 1 , 0 , 1 , 0 ,0 , 0 , 0 , 0},{ 0 , 0 , 1 , 0 , 1 , 1 , 0 , 0 ,0},{ 0 , 1 , 0 , 1 , 0 , 0 , 0 , 0 , 0},{ 0 , 0 , 0 , 1 , 0 , 0 , 1 , 1 , 0},{ 0 , 0 , 0 , 0 , 0 , 1, 0 , 0 , 0},{ 1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 1},{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0}};static String res[] = {"1","2","3","4","5","6","7","8","9" };深搜的遍歷過程就是盡可能深的搜索樹的分支,當一個節(jié)點的所有子節(jié)點都被探尋過了,搜索將回溯到發(fā)現(xiàn)該節(jié)點的那那條邊的起始節(jié)點
這個過程會一直持續(xù)到已發(fā)現(xiàn)節(jié)點可到達所有節(jié)點為止。
如果還存在未發(fā)現(xiàn)的節(jié)點則進程會隨便選擇一個未發(fā)現(xiàn)的節(jié)點重復以上的過程
整個進程直到所有節(jié)點都被訪問過為止。
深搜遍歷過程
從1開始搜索可以看到1的子節(jié)點有2、8兩個,進程會依次對其進行深度優(yōu)先搜索
進程先對2進行子節(jié)點的搜索可以看出2也有兩個子節(jié)點3、5
然后進程又會對3進行子節(jié)點的搜索可以看出只有一個子節(jié)點4,而4沒有子節(jié)點了這個時候進程就會回溯到2的位置然后對5進行子節(jié)點的搜索
可以看出5的子節(jié)點也是只有一個4,但是這個時候5還有一個父節(jié)點6沒有被訪問所以進程不會回溯到2的位置
而是對6進行子節(jié)點的搜索,6的子節(jié)點只有一個7這個時候進程又會發(fā)現(xiàn)6有父節(jié)點8沒有訪問過
所以進程會對8再次再次進行子節(jié)點的搜索,發(fā)現(xiàn)子節(jié)點只有6和9但是6已經(jīng)訪問過了,而9也沒有子節(jié)點
到這里樹的所有節(jié)點就完成了全部的探索了
深搜結果
1 2 3 4 5 6 7 8 9總結
以上是生活随笔為你收集整理的dfs——练习demo3(20届周新杰提供)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bfs——练习demo2(20届周新杰提
- 下一篇: 2022年3月23日15:51:00——