深さ優先探索
ノードからノードへ下へ降りていき、突き当たったら分岐点まで戻り、
また未開のノードへと降りていくアルゴリズム。
再帰を使ってコードを書きました。
具体例として上記の木に対して深さ優先探索をしました。
# python3
# sys.setrecursionlimit(10000) #再帰の回数上限変更 (デフォルト1000回)
# 各ノードから,どのノードにエッジ(枝)が伸びているか調べてリスト化する (隣接リスト)
edge = [[1, 2], [0, 3, 4], [0, 5], [1], [1], [2]]
def dfs(now, before=-1):#before:一つ前に通ったノード
if before==-1:
print(now)
for c in edge[now]: #c:子
if not c ==before: #無限ループを防ぐ
print(c)
dfs(c, now) #再帰
dfs(0)
出力結果
0
1
3
4
2
5
ありがとうございました。