【问题标题】:Search Function for a Non-Binary Tree C++非二叉树 C++ 的搜索函数
【发布时间】:2017-09-27 17:34:39
【问题描述】:

我已经为非二叉树编写了一个按字符串搜索的函数。我知道我的功能在其当前形式下不正确,我可以使用一些帮助来修复它。该函数返回一个节点指针,它是一个递归函数。 Elem 是一个 typedef 字符串,而 subtree 是一个输入的节点指针。此外,树中的每个节点都有一个节点指针向量,称为“子节点”。这就是 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);
        }
    }
}

【问题讨论】:

  • 你能写一个二叉树的搜索函数吗?
  • 你的编译器应该警告你缺少返回。

标签: c++ string function search tree


【解决方案1】:

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

您如何处理找不到您的val

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

【讨论】:

  • subtree = subtree-&gt;child[i]; 部分也没有意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多