这段代码是我写的。但它不插入和打印值。谁能检查并告诉问题?
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)
在此函数中,您应该通过引用传递节点指针以便能够修改节点,因此正确的参数是
树 insertNode( Node* &tree,int val)
关于C++ 树无法插入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40292655/