二叉搜索树节点计数

Counting nodes in binary search tree

本文关键字:树节点 搜索树 搜索      更新时间:2023-10-16

我需要创建一个递归方法,将二叉搜索树的根节点作为参数。然后,这个递归方法将返回具有一个左后代的节点总数的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);
}

如果我正确理解了赋值,那么函数将看起来像

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 );
}