BST에서 리프의 삭제 기능을 만들었습니다. BST가 비어 있으면 BST가 비어 있음을 알립니다. 그렇지 않으면 몇 가지 사례가 있습니다. 그 중 하나는 노드 (잎)에 자식이 없다는 것입니다. 따라서 다른 노드와 더 이상 연결하지 않아도됩니다. 먼저 그 잎을 가리키는 포인터를 지운 다음 null.But을 가리키게합니다. 그러나 프로그램은 불행하게도 추락했습니다.이진 검색 트리에서 리프 삭제
여기void BinarySearchTree :: delete_node(float deleted_key)
{
Node* deleted_node_address=return_node_address(deleted_key);
if(root == NULL) cout<<"The tree is empty, No thing to delete\n";
else if(deleted_node_address->left_ptr==NULL && deleted_node_address->right_ptr==NULL)
{
cout<<"The element has no children, No linking required\n";
delete deleted_node_address;
deleted_node_address=NULL;
}
}
가 return_node_address
함수이다 : 여기 함수이다
Node* BinarySearchTree ::return_node_address(float req_key,Node *traverse_ptr)
{
if(traverse_ptr==NULL)
{
cout<<"There is no data to return its addres";
return 0;
}
else if(traverse_ptr->key == req_key)
{
return traverse_ptr;
}
else if(req_key < traverse_ptr->key && traverse_ptr->left_ptr != NULL)
{
return_node_address(req_key, traverse_ptr->left_ptr);
}
else if(req_key > traverse_ptr->key && traverse_ptr->right_ptr!= NULL)
{
return_node_address(req_key, traverse_ptr->right_ptr);
}
else
{
cout<<"The Key You Entred Is Not Found in The Tree";
return 0;
}
}
디버거로 프로그램을 실행하고 한 줄씩 단계별 실행을 시작할 시간입니다. – user0042
QT를 사용하고 있습니다. 그 디버거가 작동하지 않습니다 !! – Ahmed
그런 다음 작동 시키십시오. 보통 그렇습니다. – user0042