이 코드를 작성했습니다. 그러나 그것은 가치를 삽입하고 인쇄하지 않습니다. 누구든지 문제를 확인하고 말할 수 있습니까?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 문에서 실행됩니다. 나는 뭔가를 놓치고 뭔가 잘못하고 있다고 생각한다. 올바른 매개 변수가
Tree insertNode(Node* &tree,int val)
내가 디버거를 사용하는 것입니다 있도록 참조하여 노드의 포인터를 전달한다이 함수에서 –
매개 변수 *를 값 *으로 전달할 때 수신 측에서는 값을 변경할 수 없습니다. 호출자의 변수는 변경되지 않습니다. 아마 당신은 참고로 통과해야합니까? –
'Tree :: root'는 초기화되지 않았습니다.'nullptr'로 설정하는 생성자가 있어야합니다. 'insertNode()'는'tree' 매개 변수를 값으로 취합니다, 그래서 그 함수에서 그것을 수정하는 것은 아무런 효과가 없습니다. –