【问题标题】:n-ary tree searching functionn叉树搜索函数
【发布时间】:2014-02-06 05:28:15
【问题描述】:

我正在尝试创建一个用于搜索 n 叉树的函数,但效果不佳,它在第 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]);
}

【问题讨论】:

  • 如果for 循环search 确实到达return 会发生什么?你还没有处理这个案子。另外,ptr 是做什么用的,代码中没有提到?
  • 如果forgets返回是什么意思? ptr 是指向父节点的指针,我需要它用于其他功能。

标签: c tree


【解决方案1】:

您返回持有所请求节点的子节点,但不返回节点本身。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2023-03-08
    • 2015-02-14
    • 2013-06-04
    相关资源
    最近更新 更多