2014-02-05 4 views
0

n-tree 검색을 위해 함수를 만들려고하고 있지만 잘 작동하지 않습니다. 레벨 2 이후에 잘못된 노드를 반환합니다.n-tree 검색 함수

여기 노드 구현

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

'for' 루프'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;