我在尝试在给定未排序数组的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)
{
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};
cout << "seg fault" << endl;
for (unsigned int i = 0; i < sizeof(a); i++)
insert(tree, a[i]);
cout << "seg fault here" << endl;
}
答案 0 :(得分:0)
实际上,我认为问题出在你的for
循环中。你循环太远了。尝试使用a.size()
代替sizeof(a)
。使用sizeof(a)
,您以字节为单位请求数组的大小,这可能返回32。