gpt4 book ai didi

c++ - 声明一个新节点但不等于 NULL

转载 作者:行者123 更新时间:2023-11-28 00:16:51 25 4
gpt4 key购买 nike

class node
{
public:
int data;
node *left;
node *right;
};

void insert(node * root, node * newnode)
{
if (root != NULL)
{
cout<<"Here1"<<endl;
if (root->data > newnode->data)
if (root->left != NULL)
insert(root->left,newnode);
else
root->left = newnode;
else
if (root->right != NULL)
insert(root->right,newnode);
else
root->right = newnode;
return;
}
else
root = newnode;
}

void inorder(node * root)
{
if (root != NULL)
{
inorder(root->left);
cout<<root->data<<endl;
inorder(root->right);
}
}

node * newn(int ele)
{
node *newnode = new node();
newnode->left = NULL;
newnode->right = NULL;
newnode->data = ele;
return newnode;
}

int main(void)
{
int ele,choice = 0;
node *root = new node();
while(choice != 5)
{
cout<<"1. Enter\n"
"2. Inorder\n"
"3. PreOrder\n"
"4. PostOrder\n"
"5. Exit\n";
cin>>choice;
switch(choice)
{
case 1: cout<<"\nElement : ";
cin>>ele;
insert(root,newn(ele));
break;
....

这是一个用c++编写的二叉搜索树代码。它只是插入部分。以及顺序打印功能。

当我创建 3 个节点,然后尝试按顺序打印时,它最初显示为零。为了测试这个,我尝试打印“here”,当我声明一个根节点指针时,它似乎不等于 NULL。我似乎不太明白这一点。

最佳答案

insert 函数中,参数 root 是按值传递的,这意味着指针被复制,在函数内部你只有拷贝。更改拷贝当然不会更改原件。

您需要通过引用传递指针:

void insert(node *& root, node * newnode)

如果您花一分钟时间进行调试,您自己很容易就能发现这一点。

关于c++ - 声明一个新节点但不等于 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29667345/

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