我已经通过字符串函数为非二叉树编写了一个搜索。我知道我的功能在目前的形式上是不正确的,我可以使用一些帮助修复它。该函数返回一个节点指针,它是一个递归函数。 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);
}
}
}
答案 0 :(得分:1)
递归时常见的错误:您需要使用递归调用的返回值返回或处理某些内容。在您的情况下,这是searchNodeString
循环中对i
的调用。此时,您需要确定是否已完成递归(并且可以立即返回),或者您需要继续搜索您的值。
你如何处理找不到val
?
此外,您的递归调用是错误的。您不希望在subtree
循环中(或函数中的任何其他位置)更改i
的值。