1. 程式人生 > >資料結構複習

資料結構複習

  • 判斷以鄰接表方式儲存的有向圖中是否存在由頂點Vi到Vj的路徑。

演算法思想:判斷圖中從Vi到Vj是否有路徑,可以採取遍歷的方法。遍歷的起點為Vi,在一次BFS退出之前遇到Vj,則證明有路徑,否則沒有路徑。

  • 在有向圖G中,如果結點r到G中的每個結點都有路徑可達,則稱結點r為G的根節點。編寫一個演算法判斷有向圖G是否有根,若有,則打印出所有根節點的值。

演算法思想:判斷頂點r到G中的每個頂點是否有路徑可達,可以通過深度優先搜尋遍歷的方法。以r為起點進行深度優先搜尋遍歷,若dfs()函式退出之前已經訪問過所有頂點,則r為根。

要打印出所有的根節點,可以對圖中每個頂點都呼叫一次dfs(),如果是根則列印。