Need help with BST Program

Hello All, I'm learning about BST from a book and I'm stuck half way while trying to code a BST. Here's my code:

Code:

`#include<stdio.h>`

#include<conio.h>

#include<stdlib.h>

typedef struct node

{

int *dataPtr;

struct node *left;

struct node *right;

}NODE;

typedef struct

{

int count;

NODE *root;

}TREE;

TREE *createTree(void)

{

TREE *tree;

tree = (TREE *)malloc(sizeof(TREE));

if(tree)

{

printf("Tree created successfully. . .\n");

tree->root = NULL;

tree->count = 0;

}

return tree;

}

void addNode(TREE *tree, int *dataInPtr)

{

NODE *newNode;

newNode = (NODE *)malloc(sizeof(NODE));

if(newNode)

{

newNode->dataPtr = dataInPtr;

newNode->left = NULL;

newNode->right = NULL;

}

if(tree->count == 0)

tree->root = newNode;

else

insertNode(tree->root, newNode, dataInPtr);

(tree->count)++;

}

NODE *insertNode(NODE *root, NODE *newNode, int *dataInPtr)

{

if(!root)

return newNode;

if(dataInPtr < root->dataPtr)

{

root->left = insertNode(root->left, newNode, dataInPtr);

return root;

}

else

{

root->right = insertNode(root->right, newNode, dataInPtr);

return root;

}

return root;

}

void inOrder(NODE *node)

{

if(node != NULL)

{

inOrder(node->left);

printf("%d\t", node->dataPtr);

inOrder(node->right);

}

}

int main(void)

{

TREE *tree;

tree = createTree();

addNode(tree->root, 20);

inOrder(tree->root);

getch();

return 0;

}

I kinda know where the problem lies. In the "else" loop of the **addNode()** function, I call **insertNode()** function which is a function with a void return type. But the **insertNode()** function actually return a **NODE** type.

I really don't know how to set the left and right nodes. I tried several things but failed. I want to do it on my own. Any help / suggestion would be appreciated.

Thanks in advance.