4.11.2 Aside: Recursive Destruction |

The algorithm used in the previous section is easy and fast, but it is
not the most common method for destroying a tree. The usual way is to
perform a traversal of the tree, in much the same way we did for tree
traversal and copying. Once again, we'll start from a recursive
implementation, because these are so easy to write. The only tricky
part is that subtrees have to be freed *before* the root. This
code is hard-wired to use *free*() for simplicity:

86. <Destroy a BST recursively 86> =staticvoidbst_destroy_recursive(structbst_node*node)

{if(node==NULL)return;bst_destroy_recursive(node->bst_link[0]);bst_destroy_recursive(node->bst_link[1]);free(node); }