二叉搜索树未排序数组

时间:2014-05-09 18:48:33

标签: insert tree binary-search-tree

我在尝试在给定未排序数组的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;

}

1 个答案:

答案 0 :(得分:0)

实际上,我认为问题出在你的for循环中。你循环太远了。尝试使用a.size()代替sizeof(a)。使用sizeof(a),您以字节为单位请求数组的大小,这可能返回32。