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; }