我已經從BST中創建了一個葉子的刪除功能。如果BST是空的,它會通知您BST是空的。否則,我有一些情況。其中之一是節點(葉)沒有孩子。因此不需要與其他節點進一步鏈接。首先,我刪除指向該葉的指針,然後將其指向null。但不幸的是,該程序崩潰。 這裏是功能:從二叉搜索樹中刪除一個葉子
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