如何找到非二叉树的高度?

时间:2016-03-10 15:35:12

标签: python python-3.x tree height

所以我正在努力编写一个递归方法来寻找树的高度。每个树节点都有一个子节点列表。我的代码返回异常,因为max不知何故是一个空序列。有人可以提供有效的吗?

def height(t):
    """
    Return 1 + length of longest path of t.

    @param Tree t: tree to find height of
    @rtype: int

    >>> t = Tree(13)
    >>> height(t)
    1
    >>> t = descendants_from_list(Tree(13), [0, 1, 3, 5, 7, 9, 11, 13], 3)
    >>> height(t)
    3
    """
    # 1 more edge than the maximum height of a child, except
    # what do we do if there are no children?
    if t.children is None:
        return 1

    else:
        return 1+max(height(x) for x in t.children)

1 个答案:

答案 0 :(得分:2)

我猜t.children是一个列表 - [] - 在叶子节点上,而不是None

>>> [] is None
False
>>> not []
True

max不能与空的迭代物一起使用 - 您认为[],0或-∞或42中的最大值是什么?

只需使用if not t.children:进行测试:

if not t.children:
    return 1

else:
    return 1 + max(height(x) for x in t.children)