С++ Кидает исключение нарушения доступа - Visual Studio

Помогите пожалуйста найти ошибку в коде. Другие компиляторы её не видят и всё работает отлично. Но визуалка кидает исключение нарушения доступа. Без понятия, где я нарушаю доступ, но... скрин исключения Минимальный код: (попробуйте через визуалку запустить)

#include <iostream>
#include <windows.h>
using std::cin;
using std::cout;
using std::endl;
struct TNode {
    int data;
    struct TNode* left;
    struct TNode* right;
};
TNode* create(int data) {
    TNode* el = new TNode;
    el->data = data;
    el->left = NULL;
    el->right = NULL;
    return el;
}
void insert(TNode* root, TNode* el) {
    if (el->data < root->data) {
        if (root->left != NULL) {
            insert(root->left, el);
        } else {
            root->left = el;
        }
    } else {
        if (root->right != NULL) {
            insert(root->right, el);
        } else {
            root->right = el;
        }
    }
}
void print(TNode* el) {
    if (el->left != NULL) {
        print(el->left);
    }
    cout << "Value: " << el->data << endl;
    if (el->right != NULL) {
        print(el->right);
    }
}
int main(void) {
    SetConsoleCP(1251); SetConsoleOutputCP(1251);
    TNode* root = new TNode;
    for (int i = 0, s = 1; i < 20; i++, s *= -1) {
        insert(root, create(i*s));
    }
    print(root);

    system("pause");
    return 0;
}

Ответы (0 шт):