2014-02-05 57 views
0

我试图做一个n元树搜索的功能,但它不能很好地工作,它会在2级后返回错误的节点。任何人都知道为什么?n元树搜索功能

这里是节点实现

​​

而且还有一个功能

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

如果for'loop'search'确实返回'return',会发生什么?你没有处理这种情况。另外,什么是'ptr'用于,因为它没有在代码中提到? – Sean

+0

你是什么意思如果得到返回? ptr是指向父节点的指针,我需要它用于其他功能。 – tripleq

回答

2

你返回保存请求的节点,但不是节点本身的孩子。

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