Binary Search Tree Crashes

Реализую дерево двоичного поиска на C++. У меня есть следующий код для добавления записи в дерево:

void tree::add(int n)
{
    int found;
    leaf *t,*parent;
    findparent(n,found,parent);
    if(found==YES)
        cout<<"\nSuch a Node Exists";
    else
    {
        t=new leaf;
        t->data=n;
        t->l=NULL;
        t->r=NULL;

        if(parent==NULL)
            p=t;
        else
            parent->data > n ? parent->l=t : parent->r=t;
    }
}

В моем main я использую map для хранения значений, считанных из текстового файла как целое число. Теперь, когда я передаю значение в функцию add, программа завершает работу.

int main()
{
    tree t;
    map word;
    map::iterator count;
    string str;
    int num;
    string space ="";
    while((str=value(cin))!=space )
    {
        num = atoi(str.c_str());
        ++word[num];
    }
    int size = (int) word.size();
    int data[size];
    int x = 0;
    for(count = word.begin(); count!=word.end(); ++count){
        data[x] = (*count).first;
        x = x+1;
    }
    for (int iter = 0; iter

Что я делаю здесь: я конвертирую пользовательский ввод в целые числа с помощью atoi, а затем добавляю их в map. Затем я получаю размер карты и использую его для заполнения массива элементами. Теперь, когда я выполняю итерации по массиву и пытаюсь передать элементы массива в дерево с помощью функции add, программа завершает работу. Программа работает нормально, когда я пытаюсь добавить фиксированный элемент массива. Например:

int data[] = {6,7,8,9};

если я имею этот фиксированный массив в main и передаю элементы в add, он работает нормально, это заставляет меня думать, что нет проблем с методом add. Пожалуйста, помогите мне найти проблему, я запутался

Pastebin Ссылка на всю программу: http://pastebin.com/SWqTccJf

0
задан iammilind 27 November 2011 в 04:27
поделиться