void _bin_tree_dump (TreeNode *n, TreeNode *sent, FILE *file, write_func_t f, void *data, BinTreeType type) { if (n != sent) { _bin_tree_dump (tree_node_get_left (n), sent, file, f, data, type); #if defined USE_JUMP_TABLE action[type](n, file, f, data); #else switch (type) { case BIN_TREE: tree_node_dump (n, file, f, data); break; case RB_TREE: rb_tree_node_dump (n, file, f, data); break; default: fprintf (stderr, "oops! not such tree\n"); break; } #endif /* USE_JUMP_TABLE */ _bin_tree_dump (tree_node_get_right (n), sent, file, f, data, type); } }
void tree_node_dump(struct tree_node * tn, unsigned level) { unsigned i; if (tn == NULL) { return; } for (i = 0; i < level; i++) { putchar(' '); } tree_node_dump_below(tn); printf(" <- %s\n", tn->head); for (i = 0; i < tn->node_count; i++) { tree_node_dump(tn->nodes[i], level + 1); } return; }