万里长征第一步——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']]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值