19:20 부분에서 질문있습니다.
교수님께서 Seekitem()를 이용해서 pair를 return하는 방법에는 while문을 사용하는 방법 말고도 재귀호출을 사용하는 방법도 있다고 하셨습니다.
저는 재귀호출로 짜봤는데 아무래도 너무 지저분한 거 같습니다. 교수님이나 다른 분이 재귀호출을 사용하셨다면 어떤 식으로 코드를 짰을 지가 궁금합니다.
제가 짠 코드는 아래와 같습니다.
static Node* SeekParentNode(const Item* pi, Node* pnode)
{
if (pnode->left != NULL)
if (compare(pnode->left->item, *pi) == 0)
return pnode;
if (pnode->right != NULL)
if (compare(pnode->right->item, *pi) == 0)
return pnode;
if (compare(pnode->item, *pi) > 0)
{
if (pnode->left == NULL && pnode->right == NULL)
return NULL;
SeekParentNode(pi, pnode->left);
}
else if (compare(pnode->item, *pi) < 0)
{
if (pnode->left == NULL && pnode->right == NULL)
return NULL;
SeekParentNode(pi, pnode->right);
}
}
static Node* SeekChildNode(const Item* pi, Node* pnode)
{
if (compare(pnode->item, *pi) == 0)
return pnode;
if (compare(pnode->item, *pi) > 0)
{
if (pnode->left == NULL)
return NULL;
SeekChildNode(pi, pnode->left);
}
else
{
if (pnode->right == NULL)
return NULL;
SeekChildNode(pi, pnode->right);
}
}
static Pair SeekItem(const Item* pi, const Tree* ptree)
{
Pair found_pair;
found_pair.parent = SeekParentNode(pi, ptree->root);
found_pair.child = SeekChildNode(pi, ptree->root);
return found_pair;
}
回答 1
정처기 필기 준비할때 이 이론을 다시 외워도 될까요?
0
46
2
최댓값 구하기(서바이벌)에서 수식 구성에 대한 질문
0
37
2
Trace32 function 함수 조회 Makefile 수정 부분
0
29
1
조건 반복문 질문: for 문 ?
0
59
1
정처기 26-2회. 9번 질문드립니다!
0
77
1
이론 보면서 질문이 있습니다.
0
71
2
이진 탐색: 탐색 실패하는 경우 어째서 first > last인 경우가 나오나요?
0
359
1
17.12) access violation
0
338
1
finditembyindex 질문드립니다!
0
373
1
pnode = pnode->next; 와 pnode->next = pnode;는 같은 것으로 생각해도 될까요?
0
423
2
질문. warning뜨는 이유
0
325
1
링크드 리스트 질문 드립니다.
0
227
1
함수포인터 질문드립니다
0
249
1
강의 내용 질문 드립니다!
0
400
2
노드 주소 순서 관련 질문
0
299
1
질문드립니다!
0
262
1
DeleteAllNodes 에서 질문있습니다.
0
440
5
16:30 질문입니다.
0
379
4
scanf 질문이요!!
0
274
1
12:30 의 ArrayQueue.h
0
318
2
10:10 Add front에서 질문드립니다.
1
380
1
스택 자료구조
0
267
1
변수 count의 활용에 대해 질문이 있습니다.
0
342
1
1번 실행하면 에러가 뜨는데 이유를 모르겠습니다..
0
398
2

