問題が発生しました。
C++での挿入方法に疑問があります。スタックオーバーフローが発生します。ダンプスタックトレース:G ++のWindows上 バイナリツリーの挿入方法によってスタックオーバーフローが発生する
グラム++ -Wall -O2 -o Tree.cppツリー
出力
0 [不明(0x2B70)]ツリー10496 cygwin_exception :: open_stackdumpfileでコンパイル
コード
# 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;
}
は戻りnode'は、ベースケースのための 'if'に追加する必要があります'これは私 – Jeremy
に無限再帰のように見えます。 – dasblinkenlight
はい、無限の再帰heheでした、ありがとう:) – Bit89