"뇌를 자극하는 알고리즘" 책 이진탐색트리를 공부하는 중인데요.
DestroyTree 함수가 이렇게 구현이 되어있더라고요.
void BST_DestroyTree(BSTNode* Tree)
{
if(Tree->Right != NULL)
BST_DestroyTree(Tree->Right);
if(Tree->Left != NULL)
BST_DestroyTree(Tree->Left);
Tree->Left = NULL;
Tree->Right = NULL;
BST_DestroyNode(Tree);
}
특별한 이유가 없다면 쉽게 왼쪽부터 노드를 삭제해줄 것 같은데 굳이 오른쪽부터 삭제하는 이유가 무엇인가요??
단지 트리를 삭제하는 방법 중에 하나인가요???
DestroyTree 함수가 이렇게 구현이 되어있더라고요.
void BST_DestroyTree(BSTNode* Tree)
{
if(Tree->Right != NULL)
BST_DestroyTree(Tree->Right);
if(Tree->Left != NULL)
BST_DestroyTree(Tree->Left);
Tree->Left = NULL;
Tree->Right = NULL;
BST_DestroyNode(Tree);
}
특별한 이유가 없다면 쉽게 왼쪽부터 노드를 삭제해줄 것 같은데 굳이 오른쪽부터 삭제하는 이유가 무엇인가요??
단지 트리를 삭제하는 방법 중에 하나인가요???
몰랐음? 그게 요즘 추세임
역시 제가 생각해도 그냥 단지 하나의 방법일 듯 싶네요.