У меня есть кусок кода, как это (реализующей Tree)Почему эта функция должна быть вызвана по ссылке?
struct Node
{
int val;
struct node* left,*right;
Node(int x){
val=x;
left=right=NULL;
}
};
void insert(Node* &h,int val){
if(h==NULL){
h=new Node(val);
return;
}
if(h->val > val){
insert(h->left,val);
}
else {
insert(h->right,val);
}
}
void temp(Node* h,int val){ // Node* h doesn't seem to work but
// Node*& h does!!!
insert(h,val);
}
int main() {
struct Node* R=NULL;
for(int i=0;i<5;i++){
cin>>x;
temp(R,x);
}
return 0;
}
Пожалуйста игнорировать незначительные ошибки и другие официальные включая библиотеки (этот код не для компиляции).
Мой вопрос:: - Почему адрес должен быть передан по ссылке в указанной строке?
Моя точка: Я посылаю адрес корня из основной в функции темп, а затем функция температуры посылает этот адрес в функцию вставки на Reference вставить функцию, которая меняется его постоянно, так почему бы не адрес корня меняется здесь? И если это ошибка, которая меняет здесь адрес?
«пройти по ссылке» означает, что функция может изменить исходное значение. В противном случае это невозможно. –
- это 'траверс', который должен быть' temp' –
@ M.M Извините, что.Edited !!! – Dofenshmirtz