このコードを記述しました。しかし、値を挿入したり印刷したりすることはありません。誰でも確認して問題を伝えることができますか?C++ツリーが値を挿入できませんでした
struct Node{
int value;
Node* left;
Node* right;
};
class Tree {
Node* root;
public:
Tree insertNode(Node* tree,int val)
{
if(tree==NULL)
{
tree = new Node;
tree->value=val;
tree->left=NULL;
tree->right=NULL;
}
else if (val<=tree->value){
insertNode(tree->left,val);
}
else
{
insertNode(tree->right,val);
}
return *this;
}
insert(int val)
{
insertNode(root, val);
}
void printTree(Node* root)
{
if(!root)
{
cout<<"Tree is empty"<<endl;
return;
}
printTree(root->left);
cout<<root->value;
printTree(root->right);
}
print()
{
printTree(this->root);
}
};
int main(){
Tree* Nodd = new Tree();
Nodd->insert(12);
Nodd->insert(10);
Nodd->print();
}
このプログラムを実行すると、insertNode関数の最初のif文で実行されます。私は何かを逃して何か間違っていると思う。この機能で
である私は、デバッガを使用することになりますが、鉱山は、現時点では動作していません。デバッガでこれを実行し、あなたの調査結果を使って投稿を編集できますか? –
パラメータ*をvalue *で渡すと、受信側で値を変更することはできません。呼び出し元の変数は変更されません。多分あなたは参照渡す必要がありますか? –
'Tree :: root'は初期化されていません - ' nullptr'に設定するコンストラクタが必要です。 'insertNode()'は 'tree'パラメータを値で取るので、その関数でそれを変更しても効果はありません。 –