С++ Кидает исключение нарушения доступа
Помогите пожалуйста найти ошибку в коде. Другие компиляторы её не видят и всё работает отлично. Но визуалка кидает исключение нарушения доступа. Без понятия, где я нарушаю доступ, но...
Минимальный код: (попробуйте через визуалку запустить)
#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;
}