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:

I kinda know where the problem lies. In the "else" loop of theCode:#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; }addNode()function, I callinsertNode()function which is a function with a void return type. But theinsertNode()function actually return aNODEtype.

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.