搜索非二进制树C 的功能

Search Function for a Non-Binary Tree C++

本文关键字:功能 二进制 搜索      更新时间:2023-10-16

我已经为非二进制树编写了搜索字符串函数。我知道我的功能目前的形式不正确,我可以使用一些帮助来修复它。该函数返回节点指针,这是递归函数。Elem是一个Typedef字符串,子树是一个输入的节点指针。另外,树上的每个节点都有一个名为"孩子"的节点指针的向量。这就是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);
        }
    }
}

递归中相当普遍的错误:您需要返回或处理递归调用的返回值的东西。就您而言,这就是i循环中searchNodeString的呼吁。那时,您需要确定是否完成(可以立即返回(,或者您需要继续通过您的值搜索。

您如何处理不找到val

另外,您的递归电话是错误的。您不想更改i循环中subtree的值(或功能中的其他任何地方(。