在學習圖的知識時,發現在遍歷方面圖和樹有諸多相似之處。而我似乎沒有很好的駕馭圖和樹,因此記錄下來,加深印象。
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的字串,用來表示完整的棋盤狀態。其...