現在、バイナリ検索ツリーのクラスコードを作成していますが、BSTクラスのデストラクタでエラーが発生しています。バイナリ検索ツリーデストラクタの問題
ノードのStruct::
Node* BST::CreateNode(int key){
Node* temp_node = new Node();
temp_node->key = key;
temp_node->left = nullptr;
temp_node->right = nullptr;
return temp_node;
}
代入演算子:
BST& BST::operator=(const BST& cpy_bst){
if (this != &cpy_bst){
Node* cpy_root = cpy_bst.root;
this->root=assgRec(cpy_root, this->root);
}
return *this;
}
Node* BST::assgRec(Node* src_root, Node* dest_root){
if (src_root != nullptr){
dest_root = CreateNode(src_root->key);
dest_root->left=assgRec(src_root->left, dest_root->left);
dest_root->right=assgRec(src_root->right, dest_root->right);
}
return src_root;
}
デストラクタ:
struct Node{
int key;
struct Node* left;
struct Node* right;
};
機能は、新しいノードを作成するには、このコードの私の関連する部分であります
BST::~BST(){
DestroyNode(root);
}
void BST::DestroyNode(Node* r){
if (r != nullptr){
DestroyNode(r->left);
DestroyNode(r->right);
delete r;
}
}
問題は、main関数で代入を使用した後、次のようになります。
BST bin_tree2 = bin_tree1;
デストラクタは呼び出されますが、bin_tree1のデータを削除した後、bin_tree2に配置されたすべての値にいくつかのジャンク値があり、その部分にエラーが発生します。どんな助けでも大歓迎です。ありがとう
エラーは何ですか? –
こんにちは!これは、DSAssg5.exeの0x00FA49DCで未処理の例外が発生しました。0xC0000005:0xDDDDDDE1の場所を読み取っているアクセス違反。 – Hamza750
Nodeクラスのコードを入力してください。 – Lunar