gpt4 book ai didi

c++ - 在二叉搜索树中插入新元素

转载 作者:行者123 更新时间:2023-12-01 21:47:53 25 4
gpt4 key购买 nike

我试图在二叉搜索树中插入一个新元素,我编写了以下函数,但它似乎不起作用,我似乎无法理解为什么。

代码:

node* new_node(int data)
{
node* ptr=new node();
ptr->data=data;
ptr->left=NULL;
ptr->right=NULL;
return ptr;
}
void insert(node* root,int d)
{
if(root==NULL)
root=new_node(d);
else if(d<root->data)
insert(root->left,d);
else
insert(root->right,d);
}

最佳答案

当您将对象传递给函数时,该函数会接收该值的拷贝作为参数。修改值的拷贝对原始对象没有影响(至少在指针等基本类型的情况下。这不适用于具有内部间接的“引用”类)。

为了修改函数外部的对象,您需要使用间接寻址。自从传递指针以来,您已经有了一个间接层。通过指针参数间接,您可以修改函数外部的节点。但分配指针并不是试图修改所指向的节点。这是修改指针的尝试。但指针是一个拷贝,因此赋值对函数外部没有影响。

因此,您需要第二层间接:传递对指针的引用,以便分配指针修改引用的指针而不是拷贝。另一种方法是使用返回值,如 Abdullah 所示。 。请注意,这会稍微改变函数的调用方式。

关于c++ - 在二叉搜索树中插入新元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59648855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com