Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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);