The code showed in Visual Studio InsertBSTNode函数错误。但是我不知道如何解决。要求是不要更改函数的类型。
TreeNode
class TreeNode{
public:
int data;
TreeNode* left;
TreeNode* right;
TreeNode(int x): data(x), left(NULL), right(NULL){}
};
InsertBSTNode
void InsertBSTNode(TreeNode* &root, int val){
// Input your code here.
if (root==NULL){
root->data=val;
root->left=root->right=NULL;}
else if(val<root->data)
root->left=InsertBSTNode(root->left,val);//error
else if(val>root->data)
root->right=InsertBSTNode(root->right,val);//error
return root;//error
};
所以这是我认为您正在尝试编写的代码
void InsertBSTNode(TreeNode* &root, int val) {
if (root == NULL) {
root = new TreeNode;
root->data=val;
root->left=root->right=NULL;
}
else if (val<root->data)
InsertBSTNode(root->left,val);
else
InsertBSTNode(root->right,val);
}
我已经修复了返回值的无效使用,并且已经修复了NULL指针错误,并且已经在需要执行插入操作的位置分配了一个节点。