非二叉树C ++的搜索函数

时间:2017-04-29 19:48:52

标签: c++ string function search tree

我已经通过字符串函数为非二叉树编写了一个搜索。我知道我的功能在目前的形式上是不正确的,我可以使用一些帮助修复它。该函数返回一个节点指针,它是一个递归函数。 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);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

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

你如何处理找不到val

此外,您的递归调用是错误的。您不希望在subtree循环中(或函数中的任何其他位置)更改i的值。