萬里長征第一步——python實現有向圖轉多叉樹

Talk is cheap!!!

from treelib import Node,Tree
tree = Tree()
def bfs_tree(graph, start):
	#根節點以start開始
	visited = [start]
	tree.create_node(start,start.lower())
	for edge, nextNode in graph[start].items():
		tree.create_node(nextNode, nextNode.lower(), parent=start.lower())
		queue = [nextNode]
		visited.append(nextNode)
		while queue:
			node = queue.pop(0)
			visited.append(node)
			for k, v in graph[node].items():
				if v not in visited:
					tree.create_node(v, v.lower(), parent=node.lower())
					if v in list(graph.keys()):
						queue.append(v)
					else:
						queue = []
				else:
					tree.create_node(v,v.upper(),parent=node.lower())
					queue = []
	tree.show()
	return tree.paths_to_leaves()
if __name__ == '__main__':
	print(bfs_tree(Graph,'A'))

結果:

A
├── B
│   ├── C
│   │   └── A
│   ├── D
│   └── E
└── Z
    └── S

[['a', 'b', 'c', 'A'], ['a', 'z', 's'], ['a', 'b', 'e'], ['a', 'b', 'd']]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章