【问题标题】:Counting nodes in binary search tree计算二叉搜索树中的节点
【发布时间】:2014-05-04 11:40:18
【问题描述】:

我需要创建一个递归方法,将二叉搜索树的根节点作为参数。然后,此递归方法将返回具有一个左后代的节点总数的 int 值。

int Tree::leftPtrCount(int count) {
    return leftPtrCountHelper(rootPtr, count);
}
int Tree::leftPtrCountHelper(TreeNode *node, int count){
    if (node == NULL)
        return 0;
    if (node->leftPtr != NULL && node->rightPtr == NULL)
        count++;
    else
        return leftPtrCountHelper(node->leftPtr, count) + leftPtrCountHelper(node->rightPtr, count);
}

【问题讨论】:

  • 问题是什么?
  • 您不会在所有情况下都返回计数器,这会导致undefined behavior(我猜这是您可能遇到的问题之一)。事实上,计数器根本不需要。
  • 欢迎使用 StackOverflow!这个网站有一些应该被尊重的礼仪。请阅读stackoverflow.com/questions/how-to-ask 以帮助改进您的问题。

标签: c++


【解决方案1】:

如果我正确理解分配,那么函数将如下所示

size_t Tree::leftPtrCountHelper( const TreeNode *node )
{
    if ( node == NULL ) return 0;
    return ( node->leftPtr != NULL && node->rightPtr == NULL ) +
             leftPtrCountHelper( node->leftPtr ) + 
             leftPtrCountHelper( node->rightPtr );
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 2020-08-07
    • 2014-05-10
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多