Hello,
First of all, this is my code:
I've just started out with C++ and I'm playing with binary trees. In InsertNode(), a new Node with the data 80 is added to the right of the 'b' node, meaning that b.right is that new node. Now, when displaying b.right->right (which should be NULL), I'm getting some weird stuff.Code:#include <iostream> using namespace std; struct TreeNode { int data; struct TreeNode *left; struct TreeNode *right; TreeNode() { left = NULL; right = NULL; } }; void insertNode(int data, TreeNode* t) { if(data <= t->data) { // insert left if(t->left == NULL) { cout << "INSERTING LEFT OF " << t->data << endl << endl; TreeNode newt; newt.data = data; t->left = &newt; } else insertNode(data, t->left); } else { // insert right if(t->right == NULL) { cout << "INSERTING RIGHT OF " << t->data << endl << endl; TreeNode newt; newt.data = data; t->right = &newt; } else insertNode(data, t->right); } } int main() { TreeNode a; TreeNode b; TreeNode c; a.data = 5; b.data = 50; c.data = 20; a.right = &b; b.left = &c; insertNode(80, &a); cout << "The right child of the new node is: " << b.right->right << endl; cout << b.right->right << endl << endl; if(b.right->right == NULL) cout << "ITS NULL"; else cout << "ITS... NOT"; return 0; }
The first cout (starting with 'the right child of...') gives me a memory address, the second cout gives me 0. When checking if b.right->right == NULL, I get the message that it's not.
Why is this happening? When I create a new node, both the children are instantiated to NULL but apparently something goes wrong when I do this in the InsertNode() function.