廣度優先遍歷

2021-05-25 05:11:27 字數 667 閱讀 1094

廣度優先遍歷(breadth-first search)

類似於對樹的層序遍歷

遍歷規則為:首先訪問初始點vi,並將其標記為已訪問過,接著訪問vi的所有未被訪問過的鄰接點,其訪問次序可以任意,假定依次為vi1,vi2,...,vit,並均標記為已訪問過,然後在按照vi1,vi2,...,vit的次序,訪問每乙個頂點的所有未被訪問過的鄰接點(次序任意),並均標記為已訪問過,依次類推,直到圖中所有和初始點vi有路徑相通的頂點都被訪問過為止。

在廣度優先遍歷中,先被訪問的頂點,其鄰接點亦先被訪問,所以在演算法的實現中需要使用乙個佇列,用來依次記住被訪問過的頂點。從初始點vi出發廣度優先遍歷圖的演算法思想為:

(1)初始化佇列q;

(2)訪問頂點vi,並將其標記為已訪問,同時,頂點vi入佇列q;

(3)如果佇列q非空,重複執行步驟①、②和③:

① 出佇列取得隊首結點u;

② 取u第乙個鄰接點並賦予值給w;

③ 如果w存在,重複執行步驟a和b:

a 如果w未被訪問,則訪問w,並將其標記為訪問,同時頂點w入佇列q;

b 取u的下乙個鄰接點並賦予值給w。

1.鄰接矩陣儲存結構下的廣度優先遍歷

2.鄰接表儲存結構下的廣度優先遍歷

廣度優先遍歷

還是上面那道題 深度遍歷一般是用遞迴,深度不斷增加,廣度搜尋一般用佇列這樣的形式儲存東西 include include using namespace std struct note int main book 51 51 int next 4 2 int head,tail int i,j,k,...

廣度優先遍歷

def printnodeatlevel treenode,level 按層序遍歷輸出樹中某一層的值 if not treenode or level 0 return 0 if level 0 print treenode.val return 1 printnodeatlevel treenod...

廣度優先遍歷

在廣度優先遍歷中,需要運用到佇列,在佇列中,才能更快更方便的實現將每乙個的可能性遍歷到。下面是一段廣搜的模板 include include include include include using namespace std struct node cur,nexxt queuequ int m...