二分探索木があり、単一の子を持つノードを削除しようとすると、そのノードを削除し、子ノードをその場所に移動します。私はそのコードを持っていますが、それを行うたびに悪いポインタを与えています。
これはコードの一部です
else if((root->Left != NULL) != (root->Right != NULL)){ //Checks if it's a on child node
if(root->Left != NULL){ //If it has a left child, attempts to move the left child to existing node
delete root;
root = root->Left;
}
else{ //If it is right child, attempts to move right child to existing node
delete root;
root = root->Right;
}
}
構造体には値があります
DATA_TYPE Value;
TreeNode* Left;
TreeNode* Right;
デバッガーから間違って割り当てていることはわかっていますが、ノードを移動する正しい方法は何ですか?