Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 递归搜索n元树中的元素_C++_Algorithm_Recursion_Search_Tree - Fatal编程技术网

C++ 递归搜索n元树中的元素

C++ 递归搜索n元树中的元素,c++,algorithm,recursion,search,tree,C++,Algorithm,Recursion,Search,Tree,我有一个树类,它有一个嵌套的私有节点类。 我编写了一个方法(Search(telem)),用于搜索树中是否存在作为参数给定的元素,并发送一个布尔值。 然而,我的问题是,只有当元素存在于树的第一个分支中时,这个方法才会发送true,如果元素不存在,它就会发送false。我一定是在递归调用中出错了 例如,在main中,我调用search('C'),结果为false,尽管我应该为true,因为C位于树的第二个分支中。 另外,我应该提到,在这个类中,复制操作符和构造函数必须被禁用,我只能使用原始指针(没

我有一个类,它有一个嵌套的私有节点类。
我编写了一个方法(
Search(telem)
),用于搜索树中是否存在作为参数给定的元素,并发送一个布尔值。
然而,我的问题是,只有当元素存在于树的第一个分支中时,这个方法才会发送true,如果元素不存在,它就会发送false。我一定是在递归调用中出错了

例如,在main中,我调用
search('C')
,结果为false,尽管我应该为true,因为C位于树的第二个分支中。
另外,我应该提到,在这个类中,复制操作符和构造函数必须被禁用,我只能使用原始指针(没有向量或智能指针)。

高级版谢谢。

您不应该返回
children[i]>search(elem)直接。因此,如果在第一个分支中未找到
elem
,它将返回
false
,它将永远无法通过第一个子级。只有找到后才直接返回。否则,请尝试其他子项。

现在是学习如何调试代码的时候了。@ThomasSablik我调试了它,我知道问题出在我的递归调用上,但我不知道如何修复它………))“递归调用中的某处”听起来不像是您调试了代码并找到了问题的原因。如果您调试了代码并知道问题所在,请将此信息添加到您的问题中。您的问题与非常类似。如果你理解了另一个问题,你就会理解你的问题。对不起,我不太明白你在说什么。你能说得更具体一点吗。谢谢考虑一下你的树只有根和两个孩子的情况。当
elem
在第二个子元素中时,试着处理代码并思考会发生什么。@Mohammadreza
if(children[i])返回children[i]->search(elem)检查第一个子项并退出循环。它不检查其他子项。@ThomasSablik,但对方法的递归调用不起到在所有子项中搜索的作用吗????您的意思是说,在这方面
return
有问题吗method@Mohammadreza更改
if(children[i])返回children[i]->search(elem)
to
if(children[i]&&children[i]->search(elem))返回true在原始代码中。