DFS與BFS的細節性問題

2021-10-20 07:38:22 字數 1086 閱讀 3015

在學習圖的知識時,發現在遍歷方面圖和樹有諸多相似之處。而我似乎沒有很好的駕馭圖和樹,因此記錄下來,加深印象。

dfs與先序遍歷都是基於遞迴實現訪問各個節點。

不同的是dfs是在for迴圈中,要迴圈遍歷當前節點的多個分支節點;並且要注意解決重複訪問的問題。

而先序遍歷是只需要訪問當前節點的左右分支即可。

void

dfs(graph g,

int v)

//for

}

void

preorder

(btnode *p)

}

bfs與層序遍歷都是利用佇列操作;

層序遍歷是將節點出隊的同時,將其左右孩子節點入隊;

而bfs是將節點出隊的同時,將其鄰接點入隊;同樣也要注意重複訪問問題

void

bfs(graph g,

int v)}}

}

void

levelorder

(bitree t)

}

bfs從乙個節點開始,一層層,從鄰近點一點點拓展到遠方。最後乙個點一定是離初始點最遠的點。

乙個無向圖是樹的條件:連通圖,頂點個數為n,且邊數=n-1;

這裡應該注意的是:無向圖,一條邊會被訪問兩次。

void

dfs2

(agraph *g,

int v,

int&vn,

int&en)

//引用型,函式變數值改變,函式結束後也會保留

}int

gistree

(agraph *g)

如果節點r到圖中任意乙個節點都有路徑,則r為根

可以以r為起點進行dfs遍歷,如果在dfs®退出前訪問了所有的節點,則r為根。

void

dfs(agraph *g,int v)

}void

print

(agraph *g)

站優化中的細節性問題 你發現了麼?

細節決定成敗,相信很多人都知道 明白這句話的含義,無論用於生活 工作都是十分的恰到好處,其實對於我們 優化也程式設計客棧是同樣的。大家都知道seo優化本身就是乙個長期的從 小 處優化積累的乙個過程,例如說 的更新,做內鏈 發布外鏈,定期的分析我們 本身的資料和檢視伺服器裡面iss日誌等等。然而真正做...

DFS與BFS的應用

題目 給出乙個n m矩陣,矩陣中的元素為0或1,稱位置 x,y 與其上下左右四個位置 x,y 1 x,y 1 x 1,y x 1,y 是相鄰的。如果矩陣中有若干個1是相鄰的 不必兩兩相鄰 那麼稱這些1構成了乙個 塊 求給定的矩陣中 塊 的個數。如 0 1 1 1 0 0 1 0 0 1 0 0 0 ...

dfs與bfs的錯誤

n 皇后問題是指將 n 個皇后放在 n n 的西洋棋棋盤上,使得皇后不能相互攻擊到,即任意兩個皇后都不能處於同一行 同一列或同一斜線上。現在給定整數n,請你輸出所有的滿足條件的棋子擺法。輸入格式 共一行,包含整數n。輸出格式 每個解決方案佔n行,每行輸出乙個長度為n的字串,用來表示完整的棋盤狀態。其...