我試圖編寫乙個遞迴的深度優先搜尋演算法,它採用表示圖的鄰接列表並列印頂點的訪問順序。
我的輸入是儲存為鄰接列表的圖形:graphal2 =
從那裡,我寫了兩個函式,乙個主函式和乙個次函式,組成了這個程式。import sys
def main():
count = 0
graphal2v = {}
for key, value in graphal2.items():
graphal2v[key] = 0
print graphal2v
for key in graphal2v:
if key == 0:
dfs(key, count, graphal2v)
def dfs(v, count, graph):
count = count + 1
graph[v] = count
for key in graph:
if key == 0:
dfs(key, count, graph)
if __name__ == "__main__":
sys.exit(main())
現在如果我執行它,輸出是:
與鍵0配對的第乙個值一直遞增,直到runtimeerror: maximum recursion depth exceeded
已到達。for迴圈應該遍歷其餘的鍵對值,並將這些值更改為訪問頂點的順序,但我不確定為什麼不這樣做。
有什麼想法嗎?
897 遞迴順序查詢樹
給你乙個樹,請你按中序遍歷重新排列樹,使樹中最左邊的結點現在是樹的根,並且每個結點沒有左子結點,只有乙個右子結點。示例 輸入 5,3,6,2,4,null,8,1,null,null,null,7,9 5 3 6 2 4 8 1 7 9 輸出 1,null,2,null,3,null,4,null,...
查詢演算法之順序查詢Python
查詢演算法中最直觀最容易理解的就是順序查詢了,思路比較簡單,就是在順序表 包括鍊錶 中按次序逐個比較,直到找到或者遍歷完線性表。關鍵點是順序遍歷。def sequentialsearch alist,item pos 0 found false while pos len alist and not...
python中的遞迴怎麼寫 python遞迴怎麼寫
程式呼叫自身的程式設計技巧稱為遞迴 recursion 遞迴做為一種演算法在程式語言中廣泛應用。乙個過程或函式在其定義或說明中有直接或間接呼叫自身的一種方法,它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大...