메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

뇌를 자극하는 알고리즘

뇌를 자극하는 알고리즘 질의응답 게시판입니다.

이번엔 트리에서 의문점이 생겨서요;; 귀찮게 해서 죄송해요 ㅋㅋㅋㅋㅋ

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 인데 이걸 굳이 초기화가 시킬 필요가 있나 싶어서요;; 그냥 궁금해서 ㅠㅠ

아 왠지 소스코드에 제가 막 딴지거는거 같은데;; 그런건 아니고 어디 물어볼때가 없거든요...

바쁘신데 죄송합니다 ㅠㅠ
댓글 입력