/* Prints the structure of |node|, which is |level| levels from the top of the tree. */ static void print_tree_structure (const struct bst_node *node, int level) { /* You can set the maximum level as high as you like. Most of the time, you'll want to debug code using small trees, so that a large |level| indicates a ``loop'', which is a bug. */ if (level > 16) { printf ("[...]"); return; } if (node == NULL) return; printf ("%d", *(int *) node->bst_data); if (node->bst_link[0] != NULL || node->bst_link[1] != NULL) { putchar ('('); print_tree_structure (node->bst_link[0], level + 1); if (node->bst_link[1] != NULL) { putchar (','); print_tree_structure (node->bst_link[1], level + 1); } putchar (')'); } } /* Prints the entire structure of |tree| with the given |title|. */ void print_whole_tree (const struct bst_table *tree, const char *title) { printf ("%s: ", title); print_tree_structure (tree->bst_root, 0); putchar ('\n'); }