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);
   }
}

Кто-нибудь знает, почему это происходит?

Ответы на вопрос(1)

Ваш ответ на вопрос