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
在第二个子元素中时,试着处理代码并思考会发生什么。@Mohammadrezaif(children[i])返回children[i]->search(elem)代码>检查第一个子项并退出循环。它不检查其他子项。@ThomasSablik,但对方法的递归调用不起到在所有子项中搜索的作用吗????您的意思是说,在这方面return
有问题吗method@Mohammadreza更改if(children[i])返回children[i]->search(elem)
toif(children[i]&&children[i]->search(elem))返回true代码>在原始代码中。