《C算法》——圖

 圖的深度優先搜索深度優先搜索與一般樹遍歷之間的差別在於需要明確防止訪問已訪問過的節點。實際上,如果圖爲一棵樹,則從根開始的深度優先搜索等價於先序遍歷。
void traverse(int k, void (*visit)(int))
{
    link t;
    (
*
visit)(k);
    visited[k] 
= 1
;
    
for(t = adj[k]; t != NULL; t = t->
next)
        
if(!visited[t->v])    traverse(t->
v, visit);
}
圖的廣度優先搜索圖的廣度優先搜索類似於樹的層序遍歷
void traverse(int k, void (*visit)(int))
{
    link t;
    QUEUEinit(V);
    QUEUEput(k);
    
while(!
QUEUEempty())
    
{
    
if(visited[k=QUEUEput()] == 0
)
    
{
        (
*
visit)(k);
        visited[k] 
= 1
;
        
for(t = adj[k]; t != NULL; t = t->
next)
        
if(visited[t->v] == 0
)
            QUEUEput(t
->
v);
    }

    }

}
發佈了24 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章