以递归方式计算二叉树中的叶数(算法)

时间:2014-10-09 14:39:30

标签: algorithm recursion binary-tree

此算法应递归计算二叉树上的叶数

ALGORITHM CountLeaves(T )

//Input: A binary tree T
//Output: The number of leaves in T

if T = ∅ return 0
else return CountLeaves(Left Leef)+ CountLeaves(Right Leef)

我不知道如何编辑它以便准确计算叶子?另外,如果你能提供证明这个失败的原因,对我来说会非常有帮助,看起来它应该可以正常工作

2 个答案:

答案 0 :(得分:3)

对您的方法的修改:问题是您没有检查节点是否为leef。

ALGORITHM CountLeaves(T )

//Input: A binary tree T
//Output: The number of leaves in T

if T = ∅ return 0
else if(left == null and right == null) return 1 // checks for leef node.
else return CountLeaves(Left Leef)+ CountLeaves(Right Leef)

答案 1 :(得分:1)

你总是会返回零 - 你需要一个像

这样的案例
if(left == null and right == null) return 1 // this is a leaf

如果您希望能够获得非零计数