networkx有向图或二叉树的节点高度,Python

Posted zhangphil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了networkx有向图或二叉树的节点高度,Python相关的知识,希望对你有一定的参考价值。

原理: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

以上是关于networkx有向图或二叉树的节点高度,Python的主要内容,如果未能解决你的问题,请参考以下文章

networkx有向图或二叉树的root根节点,Python

networkx有向图或二叉树的root根节点,Python

树的高度

有N个节点的二叉树,其高度为多少

二叉树——高度和深度

平衡二叉树的构建