Проблема в том, что current
является локальной переменной с копией значения указателя.Это не та переменная, которую вы передаете. Если вы хотите изменить указатель на месте, ваш метод должен принять либо указатель на указатель, либо ссылку на указатель.Самый простой способ сделать это - просто изменить current
на ссылку на указатель.Результирующий код будет выглядеть так:
void Insert(BSTNode* ¤t, BSTNode* node){
if (current == NULL){
current = node;
} else if (current->value == node->value){
delete node;
} else if (current->value < node->value) {
Insert(current->left, node);
} else if (current->value > node->value){//if (parent->value < node->value) {
Insert(current->right, node);
}
}
В общем, вы должны иметь в виду, что указатели - это просто значения, которые указывают вам место в памяти чего-либо.Так что они на самом деле просто цифры.И когда они передаются в функцию, если нет ссылки, они передаются по значению.Таким образом, ваша функция просто видит число, а не переменную, которая содержит число.