http://kor.i2p/books/The%20C%20Programming%20Language%20by%20K&R/chapter6.html
This
process is recursive, since the search from any node uses a search from one
of its children. Accordingly, recursive routines for insertion and printing
will be most natural. Going back to the description of a node, it is most conveniently represented
as a structure with four components: struct tnode { /* the tree node: */
char *word; /* points to the text */
int count; /* number of occurrences */
struct tnode *left; /* left child */
...