我需要编写一个函数,我需要返回树的叶子列表。
所以对于这棵树:
1
2 3
4 5 6
这应该打印[4,5,6]
这是我到目前为止所提出的。我似乎无法找到如何回到该功能。它只打印[4]
def fringe(root):
if root.left:
return fringe(root.left)
elif root.right:
return fringe(root.right)
else:
return [root.key]
任何输入?
答案 0 :(得分:4)
使用yield
创建生成器:
def fringe(root):
if root.left or root.right:
if root.left:
for key in fringe(root.left):
yield key
if root.right:
for key in fringe(root.right):
yield key
else:
yield root.key
print list(fringe(mytree))
在较新版本的python中,而不是
for key in fringe(root.left):
yield key
您可以使用:
yield from fringe(root.left)
答案 1 :(得分:1)
这不起作用,因为如果你已经离开了叶子那么你根本看不到正确的。试试这个
def fringe(root):
result = []
if root.left:
result.extend(fringe(root.left))
if root.right:
result.extend(fringe(root.right))
if not result:
result = [root.key]
return result