Recursion and new operator
I'm writing a BST class and have a very strange (at least to me) problem. I can't insert a key in tree using recursion. Iteration works fine, but I would really like to know why recursive way doesn't work.
The code I wrote seems to be fine, so if anyone could point me in right direction...
My code is:
Code:
struct sData
{
long key;
char name[20];
};
struct sTINode
{
sData data;
sTINode* left;
sTINode* right;
};
class cBST :
public cAbsTelefonskiImenik
{
public:
cTelefonskiImenikBST(void);
~cTelefonskiImenikBST(void);
bool insert(long key, char name[20]);
private:
// root
sTINode *root;
void insertLeaf(long key, char name[20], char, sTINode *node);
};
cBST::cTelefonskiImenikBST(void)
{
root=NULL;
}
bool cBST::insert(long key, char name[20]);
{
insertLeaf(key, name, root);
return true;
}
void cTelefonskiImenikBST::insertLeaf(long key, char name[20], sTINode *node)
{
if (node==NULL)
{
node=new sTINode;
node->data.key=key;
strcpy(node->data.name, name);
node->left=NULL;
node->right=NULL;
return;
}
else
{
if (node->data.key>key)
insertLeaf(key, name, node->left);
else if (node->data.key<key)
insertLeaf(key, name, node->right);
}
}