이번엔 트리에서 의문점이 생겨서요;; 귀찮게 해서 죄송해요 ㅋㅋㅋㅋㅋ
2010-01-30
|
by rasede
2053
질문은 총 2가지 인데요.
일단 첫번째로
void destroylrnode(lrnode * node)
void destroytree(lrnode * root)
이거 두개로 구분했는데 이거 구분한게요;; 왜 그럴까 싶어서요.
destroytree 함수로 다 소멸 가능하지 않나요? 그냥 궁금해서 ㅠㅠ
두번째 질문인데요.
void destroytree(lrnode * root)
{
if(root->rs!=NULL)
destroytree(root->rs);
if(root->lc!=NULL)
destroytree(root->lc);
root->lc = NULL;
root->rs = NULL;
destroylrnode(root);
}
여기서요. if 문을 돌리면 오른쪽 형제랑 왼쪽 자식들이 둘다 NULL 인 상태가 되면 free로 제거 하고.
if 문을 건너 뛰어서 lc랑 rc = NULL 인 곳에 도달하는데. free 하면 그곳이 NULL 되는거 아닌가요?
이미 NULL 인데 이걸 굳이 초기화가 시킬 필요가 있나 싶어서요;; 그냥 궁금해서 ㅠㅠ
아 왠지 소스코드에 제가 막 딴지거는거 같은데;; 그런건 아니고 어디 물어볼때가 없거든요...
바쁘신데 죄송합니다 ㅠㅠ