gpt4 book ai didi

c++ - 为什么不更新根值

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:53:21 26 4
gpt4 key购买 nike

这是在 BST 中查找 ceilfloor 的代码。当我试图插入数据时。每次插入调用都会转到第一个 if 条件。即虽然我传递了指针。该值未在主函数中更新。谁能告诉我为什么会这样?

using namespace std;

struct Node
{
int key;
struct Node* right;
struct Node* left;
};

struct Node* newNode(int key)
{
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->right = NULL;
newNode->left = NULL;
newNode->key = key;
return newNode;
}


void insert(struct Node** root,int key) {
if((*root) == NULL){
(*root)= newNode(key);
cout<<"entered first if condition"<<endl;
}
else if( (*root)->key <= key)
insert(&((*root)->left),key);
else
insert (&((*root)->right),key);
}

int ceil( struct Node* root , int input)
{
if (root == NULL)
return -1;
if(root->key == input)
return root->key;
if(root->key < input)
return ceil( root->right , input);
else{
int ceilnum = ceil(root->left, input);
return (ceilnum >= input) ? ceilnum : root->key;
}
}

int main()
{
int size, temp, ceilfor;
struct Node* root = NULL;
cout<< "size" << endl;
cin >> size;
for( int i = 0; i< size; i++)
{
cin >> temp;
insert(&root,temp);
}
cout<< root->key;
cout<< root->left->key;
cout << root->right->key;
cout << "ceil for" << endl;
cin >> ceilfor;
cout<< ceil(root, ceilfor) <<endl;
}

最佳答案

它必须达到第一个条件(直接或间接通过递归调用)。

实际的插入只发生在第一个 if block 中,其他 block 将递归地到达第一个 if block 。

关于c++ - 为什么不更新根值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13452608/

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