gpt4 book ai didi

c++ - 二叉树插入法导致栈溢出

转载 作者:行者123 更新时间:2023-11-30 03:39:50 25 4
gpt4 key购买 nike

问题

我对我在 C++ 中的插入方法有一些疑问,它会导致堆栈溢出。

在 Windows 上使用 g++ 编译

g++ -Wall -O2 Tree.cpp -o 树

输出

0 [未知 (0x2B70)] 树 10496 cygwin_exception::open_stackdumpfile:将堆栈跟踪转储到 Tree.exe.stackdump

代码

# include < iostream >

using namespace std;

struct Node{

int val;
Node *left, *right;

};

Node* Insert(Node *node, int val)
{

if(node == NULL)
{
node = new Node;
node->val = val;
node->right = node->left = NULL;
}

if(node->val > val)
node->left = Insert(node->left, val);
else
node->right = Insert(node->right, val);

return node;

}

int main()
{

Node *root = NULL; // New tree

root = Insert(root, 5);
root = Insert(root, 19);
root = Insert(root, 1);
root = Insert(root, 32);
return 0;
}

最佳答案

当递归到达 NULL 时,您必须停止递归。

试试这个:

Node* Insert(Node *node, int val)
{

if(node == NULL)
{
node = new Node;
node->val = val;
node->right = node->left = NULL;
}

else if(node->val > val) // add "else" here
node->left = Insert(node->left, val);
else
node->right = Insert(node->right, val);

return node;

}

关于c++ - 二叉树插入法导致栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38531064/

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