我正在尝试为n-ary树搜索创建一个函数,但它不能正常工作,它会在2级之后返回错误的节点。任何人都知道为什么?
这是节点实现
typedef struct node
{
char name[30];
int year;
struct node* ptr;
struct node* p[10];
} node;
还有一个功能
node *search(node *p, char* name, int year)
{
int i, n;
if(p == NULL)
return (NULL);
if((!strcmp(p->name, name) && (p->year == year))
return (p);
n = number(p); \\returns number of childs
for(i = 0; i < n; i++)
if(search(p->p[i], name, year))
return (p->p[i]);
}
答案 0 :(得分:2)
返回包含所请求节点但不包含节点本身的子节点。
for(i = 0; i < n; i++)
{
if ((p2 = search(p->p[i], name, year)))
return p2;
}
return NULL;