二叉树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

回到顶部