delete this에 대한 질문...

Astrid의 이미지

트리구조를 만드는 도중에...

매니저와 같은 것을 두지 않고 노드 별로 Insert, Delete 가능하게 만들고 있습니다.

사용법은

TreeNode* root = new TreeNode(값);
root.Insert(값);
...

root = root.Search(값).Delete(); // 반환은 Root Node
...

root.DeleteAll();

대충 이런 형태로 사용가능하게 마들고 있습니다.
Search()함수는 TreeNode*를 반환하게 되구요.

TreeNode* TreeNode::Delete()
{
...
temp = FindRoot();
delete this;
return temp;
}

Delete 함수 내부는 이렇게 사용하고 있는데..
TreeNode에 대한 인스턴스가 하나도 없게되면 프로그램이 터집니다. ㄱ-

먼가 오류가 있는가요?

totohero의 이미지

root = root.Search(값).Delete(); // 반환은 Root Node

이 라인이 실행되고 나면 root는 delete되었는데, 다시 root.DeleteAll ()로 root를 참조하여 delete하려니 문제겠죠.

Astrid의 이미지

그냥 프로그램을 허술하게 짜서 잘못된 참조때문에 오류나는것이었네요...

AVL 트리 만들고 있었는데..

버그 다 잡고 해결하였습니다^^;