C++ 非二叉树C++;

C++ 非二叉树C++;,c++,string,function,search,tree,C++,String,Function,Search,Tree,我已经为非二叉树编写了一个字符串搜索函数。我知道我的函数在当前形式下不正确,我需要一些帮助来修复它。该函数返回一个节点指针,它是一个递归函数。Elem是一个typedef字符串,子树是一个输入的节点指针。此外,树中的每个节点都有一个称为“child”的节点指针向量。这就是child.size()所指的 Node* AnimalTree::searchNodeString(const Elem& val, Node* subtree) { if (subtree->valu

我已经为非二叉树编写了一个字符串搜索函数。我知道我的函数在当前形式下不正确,我需要一些帮助来修复它。该函数返回一个节点指针,它是一个递归函数。Elem是一个typedef字符串,子树是一个输入的节点指针。此外,树中的每个节点都有一个称为“child”的节点指针向量。这就是child.size()所指的

Node* AnimalTree::searchNodeString(const Elem& val, Node* subtree)
{

    if (subtree->value == val || subtree->child.size() == 0)
    {
        return subtree;
    }
    else
    {
        for (int i = 0; i < subtree->value.size(); ++i)
        {
            subtree = subtree->child[i];
            searchNodeString(val, subtree);
        }
    }
}
Node*AnimalTree::searchNodeString(const Elem&val,Node*subtree)
{
如果(子树->值==val | |子树->子.size()==0)
{
返回子树;
}
其他的
{
对于(int i=0;ivalue.size();+i)
{
子树=子树->子树[i];
searchNodeString(val,子树);
}
}
}

递归中相当常见的错误:您需要使用递归调用的返回值返回或处理某些内容。在您的情况下,这是对
i
循环中的
searchNodeString
的调用。此时,您需要确定是否完成了递归(并且可以立即返回),或者需要继续搜索您的值

如何处理找不到您的
val


而且,递归调用是错误的。您不想更改
i
循环中的
subtree
的值(或函数中的任何其他位置)。

您可以为二叉树编写搜索函数吗?编译器应该警告您缺少返回。subtree=subtree->child[i]部分也没有意义。