gpt4 book ai didi

c++ - 在 C++ 中搜索树(非二进制)

转载 作者:行者123 更新时间:2023-11-30 02:55:38 25 4
gpt4 key购买 nike

我之前问过类似的问题,但现在我正在寻找为什么这不起作用而不是“帮助我修复”。

我必须创建一个看起来像这样的通用树:

                       1
/
v
2->3->4
/ /
v v
5-6-7 8-9

我的搜索方法是

gennode* general::search(int element, gennode *t){
if(t == NULL)
{
return t;
}
if(t->item == element)
{
return t;
}
if(t->siblingList != NULL)
{
return search(element, t->siblingList)
}
return search(element, t->firstChild)
}

其中firstChild为图片中的垂直指针,siblingList为图片中的水平指针。

我的问题是找不到 5、6 或 7(2 的 child )。

递归堆栈看起来像这样(至少我认为它应该在我的脑海中):

search(5, *1)
search(5, *2)
search(5, *3)
search(5, *4)
search(5, *8)
search(5, *9)
return NULL(from *9)
return NULL(from *8)
return NULL(from *3)
search(5, *5)
return(*5) the rest of the way up.

有人知道我在哪里迷路了吗?

最佳答案

您需要在兄弟搜索中控制 NULL 结果:

gennode* general::search(int element, gennode *t){
if(t == NULL)
{
return t;
}
if(t->item == element)
{
return t;
}
gennode* result = NULL;
if(t->siblingList != NULL)
{
result = search(element, t->siblingList)
}
if(result==NULL)
{
result = search(element, t->firstChild);
}
return result;
}

关于c++ - 在 C++ 中搜索树(非二进制),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16271913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com