Ошибка памяти при добавлении нового элемента (итеративно) в бинарное дерево поиска

В строчке 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 ни на что не указывает, то перед обращением к полям объекта через указатель нужно выделить память под сам этот объект.

→ Ссылка