使用Python返回有序树中节点的高度

2024-04-29 09:20:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,正在尝试返回Python中有序树中节点的高度。以下是我的代码:

def Height(node, T):
    if Is_OrdLeaf(T) and node == OrdRoot(T):
        return 0
    else:
        heights = []
        for x in Children(node, T):
            heights += [Height(x, T) + 1]
        return max(heights)

但是,当我用一棵树运行这个代码时

ValueError: max() arg is an empty sequence

所有被调用的函数都工作,因此heights不应该为空。怎么了?你知道吗

提前谢谢


Tags: and代码nodereturnif高度节点is
2条回答
heights = []

def height(t, level=0):
    if not t.children:
        heights.append(level)
    else:
        for c in t.children:
            height(c, level+1) 
    return max(heights)

我很想为您测试这个,但是您忽略了tree类。这是某种标准包装吗?你知道吗

else:
    return max([Height(x, T) for x in Children(node, T)])

如果你有一个大的树,用一个生成器替换列表可能会更好(把括号改成圆括号)。你知道吗

相关问题 更多 >