这个问题是针对学校(家庭作业)的,所以我不是要代码,我也不想要任何代码,只是一个想法。我必须编写一个返回两个列表的函数,一个叶子列表和一个二叉树内部节点列表。我的算法是:
1)如果左右子树都是None,它是叶子,所以我将它添加到叶子列表中。
2)如果它们不存在,那么我将其添加到内部列表中,并调用左子树上的函数,然后调用右子树上的函数,如果它们存在的话。
这是我写的代码:
def leaves_and_internals(self):
leaves = []
internals = []
if self.left is None and self.right is None:
leaves.append(self.item)
else:
internals.append(self.item)
if self.left != None:
leaves_and_internals(self.left)
else:
leaves_and_internals(self.right)
return internals, leaves
我很确定算法是正确的,但我认为每次我在节点上递归时,列表都会被重置。我怎样才能解决这个问题?
任何帮助是极大的赞赏。谢谢