我在写一个函数,它返回一个二叉树的叶节点列表和内部节点列表的元组列表。二叉树方法
所以我尝试这样做的方式是初始化两个列表(一个用于叶节点,另一个用于内部节点)。
我已经写了我的代码,它应该工作得很好,但只有一个问题。因为我必须递归地执行它,所以我必须自己调用函数,这意味着列表的初始化将再次发生,并且只会重置列表。这不是我想要的。我想继续将元素添加到这些名单,并最终返回它们...
编辑:对不起,我不能添加我的代码,但我可以给你一个粗略的想法:
list1=[]
list2=[]
if (leaf node reached):
add leaf node to list1
else:
add node to list2
call the function on the left child
call the function on the right child
return (leaves_data,internals_data)
你可以添加你的代码吗? – Moshe 2013-03-15 02:27:44
你通常对递归函数做什么是你将迄今为止的参数传递给函数。然后你创建一个包装函数,而不用那些用初始值调用“真实”函数的参数。 – millimoose 2013-03-15 02:29:04
定义一个嵌套函数,其中初始化在外部函数中完成,并且内部函数可以通过引用外部函数的作用域来访问列表。 – FatalError 2013-03-15 02:30:16