我在尝试在给定未排序数组的BST上插入元素时遇到问题。输出给我一个分段错误,但我无法确定错误的位置。我很确定我的插页有问题,但我不确定是什么。如果有人能给我一些非常感激的见解。
#include <iostream>
using namespace std;
struct BST{
BST* left;
BST* right;
int data;
};
BST* init(int data){
BST* a = new BST;
a->data = data;
a->right = NULL;
a->left = NULL;
return a;
}
BST* insert(BST* root, int data){
if (root == NULL)
root = new BST;
else{
BST* current = root;
if (current->data >= data)
insert(current->right, data);
else
insert(current->left, data);
}
return 0;
}
void inorderTraversal(BST* root)
{
cout << "seg fault here" << endl;
if(root == NULL)
cout << "No node" << endl;
inorderTraversal(root->left);
cout << root->data << endl;
inorderTraversal(root->right);
}
int main(){
BST* tree = init(5);
int a[8] = {1, 3, 5, 6, 3, 9, 10, 46};
for (unsigned int i = 0; i < sizeof(a)/sizeof(int); i++)
insert(tree, a[i]);
inorderTraversal(tree);
}
答案 0 :(得分:0)
如果你还在调试,这里有一个提示:
叶子节点的两个子节点都是NULL
,您可以通过init()
方法正确设置它们。但是,在创建新节点时,使用init()
此外,您可能需要在cout
方法中逐步执行/ insert()
s,以便您可以观看它构建树。