static void traverse_recursive (struct bst_node *node, bst_item_func *action, void *param) { if (node != NULL) { traverse_recursive (node->bst_link[0], action, param); action (node->bst_data, param); traverse_recursive (node->bst_link[1], action, param); } } void walk (struct bst_table *tree, bst_item_func *action, void *param) { assert (tree != NULL && action != NULL); traverse_recursive (tree->bst_root, action, param); }