C ++: указатель против указателя указателя для вставки узла в двоичное дерево
Я создавал функцию для вставки элемента в двоичное дерево, и сначала я сделал следующее в Visual Studio 2012:
void Insert(Nodo *root, int x){
if(root == NULL){
Nodo *n = new Nodo();
n->value = x
root = n;
return;
}
else{
if(root->value > x)
Insert(&(root)->left, x);
else
Insert(&(root)->right, x);
}
}
Но этот же код не работает на Dev-C ++, мне нужно использовать Pointer of Pointer, чтобы он работал, вот так:
void Insert(Nodo **root, int x){
if(*root == NULL){
Nodo *n = new Nodo();
n->value = x
*root = n;
return;
}
else{
if((*root)->value > x)
Insert(&(*root)->left, x);
else
Insert(&(*root)->right, x);
}
}
Кто-нибудь знает, почему это происходит?