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을 제거할경우 에러를 일으키고 죽어버립니다.
해결해보려고 하루종일 잡고있었는데 잘안되네요.
방법이 없을까요? 예전엔 그냥 공부하고 지나갔다가
다른프로그램 구현중에 필요해서 불러와서 쓰려니 이런 문제점이 발생하네요...
설명부탁드립니다.