原理:BFS广度搜索遍历后,从最后一个节点逆行向上,直到出发源点,没往上爬一层,高度加1。
import networkx as nx
def get_node_height(G, number):
height = 0
successors = G.successors(number)
if len(list(successors)) == 0:
height = 0
# print(number, '高度', height)
return height
bfs = nx.bfs_tree(G, number)
node_v = list(bfs).pop()
# print(number, '最远的点', node_v)
while True:
predecessors = G.predecessors(node_v)
ps = list(predecessors)
# print(node_v, '前继', ps)
if len(ps) == 0:
break
else:
p_node_v = ps.pop()
height = height + 1
if p_node_v == number:
break
else:
node_v = p_node_v
# print(number, '高度', height)
return height
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/zhangphil/article/details/121532776
内容来源于网络,如有侵权,请联系作者删除!