所以我正在努力编写一个递归方法来寻找树的高度。每个树节点都有一个子节点列表。我的代码返回异常,因为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)
答案 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)