InsertNode関数で、rootのアドレスを、insert関数に送る際は、
If()で確認したところ、rootは、Nullではありません。
しかしながら、呼び出された、insert関数で、受け取ったrootをifで確認すると、
Nullになっています。
どのようにすれば、rootのアドレスを送信し、rootに上書きできるでしょうか?
C++
1 2 class Tree{ 3 private: 4 struct TreeNode{ 5 Car * car; 6 String name; 7 TreeNode *left; 8 TreeNode *right; 9 }; 10 TreeNode *root; 11 12 void insert(TreeNode *& nodePtr, TreeNode*& newNode){ 13 if(nodePtr==NULL){ 14 nodePtr = newNode;//ノードを挿入する 15 cout<<“rootがNULLです。(insert関数)”<<endl;w 16 17 }else if (newNode->name < nodePtr->name){ 18 insert(nodePtr->left, newNode); //左のブランチを探す 19 20 }else{ 21 insert(nodePtr->right, newNode); //右のブランチを探す 22 } 23 TreeNode* cur = nodePtr; 24 balance(cur); 25 } 26 27 28 public: 29 void insertNode(string n,Car* car){ 30 TreeNode *newNode = NULL; // 新しいノードをポインタする 31 newNode = new TreeNode; 32 newNode->car = p; 33 newNode->left = newNode->right = NULL; 34 35 if(root!=NULL){ 36 cout << "root が NULL (inserNode関数)"<< endl; 37 } 38 // Insert the node. 39 insert(root, newNode); //ここで、insert(&root, newNode);とするべきですか? 40 } 41} 42
コンパイルエラーがいくつも出るんですけど...