AvlTree 관련 질문입니다.
AvlTree 프로그래밍 관련 공부를 하고 있는데,
어떤 Avl 트리 T에 대해서 inorder traversal 형식으로 트리를 확인하면서 a와 b 사이에 존재하는 모든 성분을 뽑아내서 새로운 성분의 Avl트리를 반환해야되는데, inorder까지 구현을 하였고 성분을 찾아서 이제 뽑아내서 삽입만 하면 되는데 리턴을 대체 어떻게 해야 되는지를 모르겠네요.
일단 위에 insert(Avltree T,int x)를 구현해놔서 이를 활용하여 삽입하려고 해도 insert란 함수 자체가 한번의 삽입만 작동하고 값을 반환시키는 방식으로 구현이 되있어서 계속 한개의 값만 도출이 되네요.
메인이나 헤더파일을 건드리지 않고도 해결할 수 있는 방법이 있는 것 같은데 내부에 다른 타입 형식의 함수를 생성해서 리턴 시키면 라이브러리포함이 안되있다며 에러가 나고, 그렇다고 클래스 함수로 하자니 메인이나 헤더파일을 건드려야 되고.... 뭔가 계속 딜레마에 빠졌네요.
(기본적인 avl 관련 함수들은 일단 구현을 했습니다.)
요약하자면 이렇습니다.
아래는 제가 구현한 소스코드입니다.
// Returns a new AVL tree which has all elements x such that a<=x<=b in tree T
AvlTree extractAVLT(AvlTree T, int a, int b)
{
if(T== NULL){
return NULL;
}
else if(T != NULL){
if(a < T->element)
extractAVLT(T->left,a,b);
if(a <= T->element && T->element <= b)
{
return ?????????????????
}
if(T->element < b)
extractAVLT(T->right,a,b);
}
}
혹시
K대학교
화목 오후 5:00 수업 듣고 계시는지?
댓글 달기