Ошибка памяти при добавлении нового элемента (итеративно) в бинарное дерево поиска
В строчке if (head == nullptr) выдает ошибку Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)
void Tree<T>::insertI(T data)
{
if (head == nullptr)
{
head -> data = data;
} else
{
Node<T> *temp = head;
while (temp)
{
if (data <= temp -> data)
{
temp = temp -> left;
} else
{
temp -> left = new Node<T>;
temp -> left -> data = data;
}
if (data >= temp -> data)
{
temp = temp -> right;
} else
{
temp -> right = new Node<T>;
temp -> right -> data = data;
}
}
}
}
Метод итеративного добавления.
template <typename T>
Tree<T>::Tree()
{
head = nullptr;
}
Так создаю пустое дерево
#include <iostream>
#include "Tree.h"
int main()
{
Tree<int> intTree;
intTree.insertI(5);
return 0;
}
Функция main().
Ответы (1 шт):
Автор решения: jokerbot
→ Ссылка
Вы не выделили память под объект, на который указывает head. Т.е. если указатель head ни на что не указывает, то перед обращением к полям объекта через указатель нужно выделить память под сам этот объект.