def dfs(graph, node, visited, leaf_nodes):
if node not in visited:
visited.add(node)
print(node, end=' ')
if not graph[node]: # 檢查節點是否為樹葉
leaf_nodes.append(node)
for neighbor in graph[node]:
dfs(graph, neighbor, visited, leaf_nodes)
# 使用範例
graph = {'A': ['B', 'C'], 'B': ['D', 'E'], 'C': ['F'], 'D': [], 'E': ['G'], 'F': [],'G':[]}
for k, v in graph.items():
visited = set()
leaf_nodes = []
dfs(graph, k, visited, leaf_nodes)
print(" -- Leaf nodes:", leaf_nodes)
# 執行結果
A B D E G C F -- Leaf nodes: ['D', 'G', 'F']
B D E G -- Leaf nodes: ['D', 'G']
C F -- Leaf nodes: ['F']
D -- Leaf nodes: ['D']
E G -- Leaf nodes: ['G']
F -- Leaf nodes: ['F']
G -- Leaf nodes: ['G']
沒有留言:
張貼留言