супер немой вопрос, я хочу, чтобы создать бинарное дерево в C++, и следующий мой кодИспользование нового в C++
include <iostream>
using namespace std;
struct tree{
tree * child_left = NULL;
tree * child_right = NULL;
int root;
tree * parent = NULL;
};
int main(int argc, const char * argv[]) {
tree *t1 = new tree;
tree *t2 = new tree;
tree *t3 = new tree;
tree *t4 = new tree;
tree *t5 = new tree;
tree *t6 = new tree;
tree *t7 = new tree;
t4->root = 1;
t5->root = 3;
t6->root = 6;
t7->root = 9;
t2->root = 2;
t2->child_left = t4;
t2->child_right = t5;
t3->root = 7;
t3->child_left = t6;
t3->child_right = t7;
t1->root = 4;
t1->child_left = t2;
t1->child_right = t3;
cout << t1->child_left->child_right->root;
return 0;
}
Это действительно может работать, но если я удалю новый при объявлении тех узлов , xcode будет иметь ошибку (Thread1: EXC_BAD_ACCESS (код = 1, адрес = 0x10)).
Интересно, почему возникает проблема Thread и почему мне нужно использовать новое при объявлении этих узлов.
Заранее спасибо.
Если вы не используете 'новое дерево', то ваши указатели не инициализируются, и вы получаете неопределенное поведение при попытке косвенного использования через них. – Barmar
Делает ли '= NULL' что-либо в контексте' struct'? Я думал, что вам нужно написать конструктор, чтобы установить такую вещь. – tadman
@tadman new in C++ 11 – kfsone