Проблема
У меня есть некоторые сомнения с моим методом вставки в C++, это вызывает переполнение стека.Метод вставки двоичного дерева вызывает переполнение стека
Собран с г ++ на Windows,
г ++ -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;
}
выглядит бесконечной рекурсии мне – Jeremy
Это потому, что 'вернуть node' должны быть добавлены к' if' для базового случая. – dasblinkenlight
Да, это была бесконечная рекурсия хехе, спасибо :) – Bit89