如何解决递归计算二叉树的叶子数
ALGORITHM LeafCounter(BTNode node)
// Computers recursively the number of leaves in a binary tree
// Input: Root node of a binary (sub-)tree 1/
// Output: The number of leaves in the tree rooted by input node
if (node == null) return 0;
else
return LeafCounter(node.getLeftChild 0 ) + Leaf Counter(node.getRightChild();
我不知道如何编辑它才能准确计算叶子数?另外,如果你能提供为什么会失败的证据,那对我来说会很有帮助,看起来它应该可以工作
解决方法
正确的算法:
ALGORITHM LeafCounter(BTNode node)
// Computers recursively the number of leaves in a binary tree
// Input: Root node of a binary (sub-)tree 1/
// Output: The number of leaves in the tree rooted by input node
if (node == null) return 0;
else
//Since current node is not null so
return 1 + LeafCounter(node.getLeftChild()) + Leaf Counter(node.getRightChild());
注意:您可能需要从最终结果中减去 1,以从计数中排除根节点。
,您只需要检查叶子状况,即可给出正确的结果。
ALGORITHM LeafCounter(BTNode node)
// check base condition
if (node == null) return 0;
// check leaf condition
if (node.getLeftChild() == null && node.getRightChild() == null) return 1;
// recurse for children
else return LeafCounter(node.getLeftChild()) + LeafCounter(node.getRightChild());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。