Code:
 void destroy_tree(struct node *leaf)
{
  if( leaf != 0 )
  {
      destroy_tree(leaf->left);
      destroy_tree(leaf->right);
      free( leaf );
  }
}
Why wouldnt we just free the root. Doesnt it free all the memories that are bound to it ? I may be wrong. I even know I am wrong but , so even we free the root , other memorial places will still be filled?