gpt4 book ai didi

c++ - 当我尝试将新指针分配给结构时发生堆栈溢出错误

转载 作者:行者123 更新时间:2023-11-30 04:41:36 25 4
gpt4 key购买 nike

当我调用函数 newNode 时抛出异常并显示 stack overflow,我检查了其中节点的参数说它们无法读取。

             struct node
{
int data;
struct node* left;
struct node* right;
};

//function that initialeze a new node
struct node* newNode(int data) {
struct node *node = (struct node *) malloc(sizeof(struct node));
node->data = data;
node->left = NULL;
node->right = NULL;

return node;
}

struct node* arrayToBST(int arr[], int start, int end) {
int mid = (start + end) / 2;

struct node *root = newNode(arr[mid]);

root->left = arrayToBST(arr, start, mid - 1);
root->right = arrayToBST(arr, start, mid + 1);


return root;
}

最佳答案

函数 newNode 没问题,真正的问题出在函数 arrayToBST 上。你试图递归地构建树,但你没有给它一个停止点,例如:

struct node* arrayToBST(int arr[], int start, int end) {
if (start > end) return NULL;
int mid = (start + end) / 2;
...

因此您的程序将无休止地调用arrayToBST 函数,直到堆栈溢出。

关于c++ - 当我尝试将新指针分配给结构时发生堆栈溢出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59089573/

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