재귀 함수를 사용하여 이진 트리 (아니요, 이진 검색 트리가 아니라 이진 트리가 아닙니다)를 사용하여 검색 방법을 만들려고합니다. 데이터가 이진 트리에 있다면 노드를 반환하고 싶지 않은 경우 NULL
값을 반환합니다. 나는 검색 기능을 만들었고 완벽하게 그 일을하고있다. 하지만 문제는 함수가 노드를 반환하지 않는 것 같습니다. 여기 C : 이진 트리 검색 방법
struct
의 :
struct data
{
int number;
struct data *left, *right;
}*root = NULL;
이 내가 이야기하고있는 검색 기능입니다 :
data* search(struct data *node, int key)
{
if(node == NULL)
return NULL;
else
{
printf("\n%d %d -", node->number, key);
if(node->number== key)
return node;
search(node->left, key);
search(node->right, key);
}
}
이 같은 검색 기능을 호출 해요 : search(root, 6);
, 그것은 6
숫자를 이진 트리에 밀어 넣었지만 (검색 함수는 return node;
라인에서 너무 멈 춥니 다.) 그 값을 가정 할 때 NULL
값을 반환합니다. 함수는 NULL
을 반환합니다.
here의 이진 트리에 대한 튜토리얼을 보았습니다. 일부 코드를 사용하고 변경했지만 여전히 동일합니다. 나는 필사적으로 바로 여기에 도움을 찾고 있어요 :(
이
C 또는 C++? 근본적으로 다른 짐승. –
일부 호출이 null이 아닌 포인터를 반환하면 그 값은 어떻게됩니까? –
@ KonradRudolph : 실제로 C이지만 C++ 컴파일러를 사용하고 있으므로 문제가되지 않습니다. . – aquatorrent