C++ 什么是*&;你在这里干什么?我如何更改它以获得一个代码作为void binaryTree::insert(binaryNode*root,string value)?可能吗? void binaryTree::insert(binaryNode*&根,字符串值) { if(root==NULL) root=CreateNode(值); else if(值>根->数据) 插入(根->右,值); else if(值数据) 插入(根->左,值); }
C++ 什么是*&;你在这里干什么?我如何更改它以获得一个代码作为void binaryTree::insert(binaryNode*root,string value)?可能吗? void binaryTree::insert(binaryNode*&根,字符串值) { if(root==NULL) root=CreateNode(值); else if(值>根->数据) 插入(根->右,值); else if(值数据) 插入(根->左,值); },c++,pointers,tree,binary-search-tree,C++,Pointers,Tree,Binary Search Tree,binaryNode*&表示对指向类型binaryNode的指针的引用。因为它是一个引用,所以该语句root=CreateNode(value)将修改root引用的内容,而不是更改root本身 因此,如果将其替换为binaryNode*,则该语句将不起作用,因为您刚刚修改了此堆栈帧上的root,当函数返回时,此变量将被销毁。您需要传递指向指针的指针: void binaryTree::insert(binaryNode *&root,string value) { if(root
binaryNode*&
表示对指向类型binaryNode
的指针的引用。因为它是一个引用,所以该语句root=CreateNode(value)
将修改root
引用的内容,而不是更改root
本身
因此,如果将其替换为
binaryNode*
,则该语句将不起作用,因为您刚刚修改了此堆栈帧上的root
,当函数返回时,此变量将被销毁。您需要传递指向指针的指针:
void binaryTree::insert(binaryNode *&root,string value)
{
if(root==NULL)
root = CreateNode(value);
else if( value > root->data )
insert (root->right,value);
else if( value < root->data )
insert (root->left,value);
}
凭猜测但我不应该猜。请编辑您的问题并添加语言标记。
void binaryTree::insert(binaryNode **root,string value)
{
if(*root==nullptr)
*root = CreateNode(value);
else if( value > *root->data )
*root = insert (*root->right,value);
else if( value < *root->data )
*root = insert (*root->left,value);
return root;
}
binaryNode *binaryTree::insert(binaryNode *root,string value)
{
if(root==nullptr)
root = CreateNode(value);
else if( value > root->data )
root = insert (root->right,value);
else if( value < root->data )
root = insert (root->left,value);
return root;
}
someTree = binaryTree::insert(someTree, someString);