n-ary树搜索功能

时间:2014-02-05 21:22:10

标签: c tree

我正在尝试为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]);
}

1 个答案:

答案 0 :(得分:2)

返回包含所请求节点但不包含节点本身的子节点。

for(i = 0; i < n; i++)
{
    if ((p2 = search(p->p[i], name, year)))
            return p2;
}
return NULL;