Binary Tree Issue with Insert Function

Hi Everyone I'm losing my mind trying to find out what is wrong with my Binary Tree Class. when I go to insert a node into the tree the entire program crashes. Does anyone a have any suggestions?

#include <iostream>

using namespace std;


struct TreeNode
{

int item;
TreeNode *left;
TreeNode *right;


};


class treeClass
{
public:
treeClass();
void insert(TreeNode *node, int item);
bool treeContains(TreeNode *node, int item);
void destroy_Tree(TreeNode *node);
void inOrderPrint(TreeNode *node);
~treeClass();



private:
int count;
TreeNode *root;



};


int main()
{
treeClass *tree1;


TreeNode *newNode;



tree1->insert(newNode, 12);
tree1->inOrderPrint(newNode);

system("pause");
return 0;
}

treeClass::treeClass()
{
root = NULL;

}
void treeClass::insert(TreeNode *node, int item)
{

if(root==NULL)
{
node = new TreeNode;
node->item = item;
node->right = NULL;
node->left = NULL;
root = node;
return;
}
else if(item < root->item)
{
insert(root->left, item);

}
else
{
insert(root->right, item);
}

}
Try this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
TreeNode* treeClass::insert(TreeNode *root, int item)
{

   if(root==NULL) // empty tree
   {
       TreeNode* node = new TreeNode;
       node->item = item;
       node->right = NULL;
       node->left = NULL;
       root = node;
   }
   else if(item <= root->item)
   {
        root->left = insert(root->left, item);   // recurse on left
   }
   else
   {
        root->right = insert(root->right, item); // recurse on right
   }

   return root;

}


In main(), set newNode to NULL, before passing it to the insert function.

Notice the return type. The function will return the root of the tree, so make sure to catch the return in main.
Last edited on
@Arslan7041
I have something to tell you. Just enable PM.
@closed_account: Okay, done.
Topic archived. No new replies allowed.