データを BST に挿入する関数を作成しましたが、正常に動作します。「参照渡し」を使用しましたが、「head」の値は挿入ごとに変更されるはずです。ただし、「ヘッド」は常に挿入した最初の値を指していることがわかりました。「頭」が挿入した最初のデータを指す原因を説明できる人はいますか?
void insert(node *&head, int val){
if(head == NULL){
head = newNode(val);
}
else{
if(val <head->data)
insert(head->left,val);
else
insert(head->right,val);
}
}