내가 TREE를 이용해서 간단한 콘솔 프로그램을 만들고 있는데 하나 질문좀 할께


일단 배열이 아닌 포인터를 이용한 TREE이고


root노드에 좌, 우 노드를 삽입하는 insertNode 함수가 있어


예를들면 루트 노드가 있고, insertNode(root) 하면 루트노드 좌, 우에 노드 하나씩 달리는거지


각 노드는 int형 데이터를 하나씩 가지고 있고... 내가 하고 싶은것은 트리의 레벨을 하나씩 올리면서 원하는 값을 찾는거야.


예를들어 처음 루트노드의 값을 비교해보고, 찾는값이 아니면 insertNode함수를 실행하고


그다음 좌 우에 달린 노드들의 값을 찾아보고, 찾는값이 없으면 다시 좌 우 각각에 좌,우 노드를 달아주면서 점점 값을 찾는거지.


내가 만든 insertNode 함수는 이러하다


void insertNode(treeNode* root){

treeNode* leftnode;

treeNode* rightnode;


//root노드의 왼쪽, 오른쪽노드 생성

leftnode = (treeNode*)malloc(sizeof(treeNode));

leftnode->level = root->level +1;

leftnode->total = root->total - leftnode->level;

leftnode->left = NULL;

leftnode->right = NULL;

root->left = leftnode;

if(leftnode->total == numb){

if(answer != -1){

if(leftnode->level < answer) answer = leftnode->level;

else return;

}

else answer = leftnode->level;

}


rightnode = (treeNode*)malloc(sizeof(treeNode));

rightnode->level = root->level + 1;

rightnode->total = root->total + rightnode->level;

rightnode->left = NULL;

rightnode->right = NULL;

root->right = rightnode;


if(rightnode->total == numb)

{

if(answer != -1){

if(rightnode->level < answer) answer = rightnode->level;

else return;

}

else answer = rightnode->level;

}


}




트리에 계속해서 insertNode를 해서 늘려 나가야 하는데, 문제는 적절한 재귀함수 사용법을 모르겠다는 거야...


root노드 값 검사 -> 값 못찾음 -> 좌 우 노드들을 삽입하고 값 검사 -> 값 못찾음 -> 다시 또 좌 우 노드들을 삽입하고 값 검사 -> ...


이런 알고리즘이 되어야 하는데.. 뾰족한 수가 안떠오르네... 한 층 별로 검사를 하는게 아니라 왼쪽 쭉~ 검사하고 이런식으로 되서 자꾸 스택 오버플로 나네... 형들 제발 답좀 알려줘 ㅠㅠ