- 论坛徽章:
- 0
|
昨天发的比较匆忙, 现在补充一下。
这个工具可以供任意的二叉树使用,只要你的二叉树的节点数据结构包含如下咚咚:
1) 一个指向左子节点的指针;
2) 一个指向右子节点的指针;
说实话,我还没碰到过二叉树节点的结构中没有包含这两个玩意的 :)
大家在调用之前还应该实现一个接口 typedef char* (*print_node)(void *node);
这接口和c# JAVA中的 object.toString()一个意思,就是打印节点, 你想咋输出就咋输出。 如果你不实现的话,工具包将会越俎代庖, 打印出节点的地址。
举例说明:
假如二叉树节点结构为:
struct tree_item{
int value;
tree_item_t * pnode; /* parent item */
tree_item_t * lnode; /* left item */
tree_item_t * rnode; /* right item */
};
实现的接口为:
static char *output_node(void *node){
tree_item_t *cur = (tree_item_t *)node;
char *buf = malloc(64);
snprintf(buf, 64, "%d", cur->value);
return buf;
}
那么调用生成图例的方式为:
DO_TREE_MAP(tree.root, tree_item_t, lnode, rnode, output_node);
如何,应该用起来非常简单吧。
懒得将这个结果画成jpg图片,个人认为,用html能够更快更简单的实现,何必去搞复杂的玩意呐? |
|