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

한빛미디어

뇌를 자극하는 알고리즘

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

BST_RemoveNode()질문입니다.(루트노드 제거시 에러발생)

2011-05-15

|

by forstill

3867

안녕하세요.

자료구조와 알고리즘을 공부하고 있는 학생입니다.

이진탐색트리에서 노드 제거시 문제점을 발견해서 문의글올립니다.

http://www.hanb.co.kr/brain/board/view.html?id=algorithm&ma_id=14043&pg=1
위와 같은 문제점을 발견하여 오탈자리스트에 있는데로 수정했음에도 불구하고


삭제할 노드(TargetNode)가 루트노드일경우 parent를 찾지 못해서

                                if(Parent->Left == Tree)
                                        Parent->Left = Temp;
                                else
                                        Parent->Right = Temp;
이부분에서 에러가 나버립니다.

즉 루트노드는 삭제가 불가능합니다.

가령 1-2-3-4-5-6 의 이진탐색트리를 생성시킨 후

노드1을 제거할경우 에러를 일으키고 죽어버립니다.


해결해보려고 하루종일 잡고있었는데 잘안되네요.

방법이 없을까요?  예전엔 그냥 공부하고 지나갔다가

다른프로그램 구현중에 필요해서 불러와서 쓰려니 이런 문제점이 발생하네요...

설명부탁드립니다.
댓글 입력