I coded a binary tree with basic functions: insert, display, search and clear. The clear() function isn't working properly. I want to delete all the nodes. So I modified the display function:
I remove the nodes in sort order (small -> big numbers). After I cleared the tree, I display() the tree again. It prints 1 rubbish number. Though the n->right and n->left should be NULL. I know the clear() function is wrong, but I don't know how to clear the tree properly.Code:// header files
struct tree
{
int dat;
struct tree *left, *right;
} *root, *temp;
void display(struct tree *n)
{
if(n->left) display(n->left);
printf("%d\n", n->dat);
if(n->right) display(n->right);
}
// Other functions
void clear(struct tree *n)
{
if(n->left) clear(n->left);
free(n);
if(n->right) clear(n->right);
n->left = NULL;
n->right = NULL;
}