inline void insert(node *root, int value)
{
if(!root)
{
root = new node();
root->value = value;
}
else
{
node *itr = root;
while(1)
{
if(itr->value > value)
itr = itr->left;
else
itr = itr->right;
if(!itr)
{
itr = new node();
itr->value = value;
break;
}
}
}
}
//像这样调用插入函数
node *head = 0;
insert(head, 5);
insert(head, 10);
insert(head, 3);
insert(head, 1);
insert(head, 4);
我知道这个代码不会起作用,因为insert函数中的'itr'是一个局部变量,所以它不会反映方法之外的树。然而,我不清楚为什么它不起作用。尽管'itr'是一个局部变量,但'itr'指向与'root'相同的位置。此外,我正在取消引用它来移动'left'或'right',所以我认为它应该工作。
我认为这是传递指针的基本问题,即指针按值传递和指针,但我找不到一个清晰的解释,说明为什么不能使用指针的局部变量来更改树。
new
是 C++ 的关键字。 - C0deH4cker