

What I've just called ``scanning through'' a tree is actually called traversing a tree.
General Definition: to traverse a data structure is to process, however you like, every node in the data structure exactly once.
Note: You may ``pass through'' a node as many times as you like but you must only process the node once.E.g. we can talk about ``traversing a list'', which means going through the list and processing every node once. We had a special name for this:
map.
For a specific data structure, we talk about the different orders in which it might be traversed. For a list there are two common traversal orders: first-to-last (the most common) and last-to-first.
The general recursive pattern for traversing a (non-empty) binary tree is this: At node N you must do these three things:
Using Left-To-Right traversal:
For example, suppose we were writing out the nodes of the tree:
void print_tree(binary_tree *t)
{
if (! is_empty(t)) {
print_tree(t->left); /* L */
print_tree(t->right); /* R */
printf("%d\n",t->value); /* N */
}
}
The preceding diagrams show us the order in which the nodes will get
written: