深度優先遍歷和廣度優先遍歷

2022-09-09 07:00:16 字數 703 閱讀 3261

其實簡單來說 深度優先就是自上而下的遍歷搜尋 廣度優先則是逐層遍歷

對於演算法來說 無非就是時間換空間 空間換時間

深度優先不需要記住所有的節點, 所以占用空間小, 而廣度優先需要先記錄所有的節點占用空間大

深度優先有回溯的操作(沒有路走了需要回頭)所以相對而言時間會長一點

深度優先採用的是堆疊的形式, 即先進後出

廣度優先則採用的是佇列的形式, 即先進先出

const data = [

] },

] },

] },

],},

] },

] },

] },],}

]// 深度遍歷, 使用遞迴

function dfs(data)

map(item);

})return result.join(',');

}// 廣度遍歷, 建立乙個執行佇列, 當隊列為空的時候則結束

function bfs(data) );

}return result.join(',');

}console.log(dfs(data)) //root,a,b,e,c,f,d,g,a2,b2,e2,c2,f2,d2,g2

console.log(bfs(data)) //root,a,a2,b,c,d,b2,c2,d2,e,f,g,e2,f2,g2

深度優先遍歷 和 廣度優先遍歷

圖的廣度優先搜尋是樹的按層次遍歷的推廣,它的基本思想是 首先訪問初始點vi,並將其標記為已訪問過,接著訪問vi的所有未被訪問過的鄰接點 vi1,vi2,vi t,並均標記已訪問過,然後再按照vi1,vi2,vi t的次序,訪問每乙個頂點的所有未被訪問過的鄰接點,並均標記為已訪問過,依次類推,直到圖中...

廣度優先遍歷和深度優先遍歷

深度優先遍歷 廣度優先遍歷是圖的一種遍歷方式,它的思想就是遍歷這個點相鄰的所有的點,再對這些點進行廣度優先遍歷.如下圖所示 首先我們從a點開始遍歷,然後遍歷所有和a相鄰的點f和點g 然後對f和點g進行遍歷進行遍歷,得到點e,h,k和b 然後再繼續,知道所有的點都遍歷完成 首先,我們先定義圖graph...

廣度優先遍歷和深度優先遍歷

1.1 概念 以初始節點v0作為第一層節點,接著訪問它。然後迭代第一層節點即v0,訪問它相鄰接的沒有訪問過的節點比如v1,v2,v1,v2加入到第二層節點 迭代第二層節點v1,v2,v1,v2依次訪問相鄰接的沒有訪問過的節點,重複上述步驟直至所有節點都被訪問過為止。如圖所示首先訪問根節點v0,並將v...