【发布时间】:2016-01-17 08:13:24
【问题描述】:
我不明白,为什么我无法想出一个简单的递归函数来计算二叉树上的叶子数。我很惭愧地说,我只是一脸茫然,盯着显示器试图弄清楚为什么一切都不起作用。 为什么很难实现,什么有效,什么无效?这应该是直观的还是不直观的?
def num_leaves(tree):
if (tree.get_left() is None) and (tree.get_right is None()):
return 1
#something goes here..
return #something here..
有人可以提供一些建议,为什么我可能没有发现它想象的那么简单
谢谢
【问题讨论】:
-
你试过递归吗?它使问题变得更容易。
-
这就是我想要做的,我只确定了基本情况,但我不确定现在该做什么
-
好的,这个想法是,如果你在一个节点中,你必须计算那个节点,所以创建一个变量并立即分配 1 给它,接下来你必须向它添加子节点的数量左边,然后是右边的孩子的数量。最后归还这笔款项。如果没有孩子它应该返回1,单独的节点,如果有左孩子,那么它应该是1+孩子(左),如果有孩子左右,那么它应该是1+孩子(左)+孩子(对)
-
这是要数叶子的数量? (所有节点正好有 0 个子节点)
-
哦,对不起,我不知道你叫什么叶子,无论如何这个想法很容易从那个案例中改编,它实际上是相同的过程,而不是仅仅添加 1+childs 你只添加 1 if没有孩子,否则如果只剩下孩子,则返回左孩子的函数,如果两者都有,则返回左孩子的函数结果+右孩子的函数结果。跨度>
标签: python-3.x recursion binary-tree