二叉树numLeaf算法不起作用
我正在编写一个程序来尝试获取二叉树中的树叶数。我所做的是我检查了当前ptr是否是一片叶子,如果不是,继续前往下一个子树。但是,当我运行它时,它不断返回2.我做错了什么?二叉树numLeaf算法不起作用
我没有包含源代码,因为它相对标准(具有rLink,lLink等)。
template <class elemType> long int bSearchTreeType<elemType>::getLeaves(nodeType<elemType> * current, long int count) const {
if(current->rLink == NULL && current->lLink == NULL) {
count += 1;
return count;
}
if(current->rLink!=NULL) {
getLeaves(current->rLink);
}
if(current->lLink!=NULL) {
getLeaves(current->lLink);
}
}
template <class elemType>
long int bSearchTreeType<elemType>::leaves() const {
if(this->root!=NULL) {
return this->getLeaves(this->root);
}
}
编辑:当我运行这个有没有错误,我宣布在参数列表数= 1的功能。这就是为什么我能够做到这一点。
回答:
我发现了一些问题。
1)您打电话给return this->getLeaves(this->root);
,但是在此代码示例中没有使用该方法签名的方法。 bSearchTreeType<elemType>::getLeaves(nodeType<elemType> * current, long int count)
2)你的代码不处理对树的情况下current
可以为null即)像
2 /
1
3)你没有返回遍历左,右子树后,任何东西。
你可以写这样的事情
template <class elemType> long int bSearchTreeType<elemType>::getLeaves(nodeType<elemType> * current)
{
if(current == NULL)
return 0;
if(current->rLink == NULL && current->lLink == NULL)
return 1;
int leftSubTree = getLeaves(current->lLink);
int rightSubTree = getLeaves(current->rLink);
return leftSubTree + rightSubTree;
}
以上是 二叉树numLeaf算法不起作用 的全部内容, 来源链接: utcz.com/qa/257097.html