super dumb question, I want to create a binary tree in c++, and the following is my code

```
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;
}

```

This can actually work but if I remove the new when declaring those node, xcode will have error like (Thread1: EXC\_BAD\_ACCESS(code = 1, address = 0x10)). 

I wonder what cause the Thread problem and why I need to use new when declaring these nodes.

Thanks in advance.