分享

GLIB库:树

 217小月月坑 2015-02-15

glib中有两种不同的树:GTree是基本的平衡二叉树,它将存储按键值排序成对键值; GNode存储任意的树结构数据

 

,比如分析树或分类树。

 

函数列表:创建和销毁平衡二叉树

#include <glib.h>

GTree* g_tree_new(GCompareFunc key_compare_func)

void g_tree_destroy(GTree* tree)

 

函数列表: 操纵G t r e e数据

#include <glib.h>

void g_tree_insert(GTree* tree,gpointer key,gpointer value)

void g_tree_remove(GTree* tree,gpointer key)

gpointer g_tree_lookup(GTree* tree,gpointer key)

 

函数列表: 获得G Tr e e的大小

#include <glib.h>

/ *获得树的节点数* /

gint g_tree_nnodes(GTree* tree)

/ *获得树的高度* /

gint g_tree_height(GTree* tree)

 

使用g_tree_traverse()函数可以遍历整棵树。

要使用它,需要一个GtraverseFunc遍历函数,它用来给g_tree_trave rse()函数传递每一对键值对和数据参数。

只要GTraverseFunc返回FALSE,遍历继续;返回TRUE时,遍历停止。

可以用GTraverseFunc函数按值搜索整棵树。

以下是GTraverseFunc的定义:

typedef gint (*GTraverseFunc)(gpointer key, gpointer value, gpointer data);

G Tr a v e r s e Ty p e是枚举型,它有四种可能的值。下面是它们在G t r e e中各自的意思:

* G_IN_ORDER (中序遍历)首先递归左子树节点(通过GCompareFunc比较后,较小的键),然后对当前节点的键值对调用

 

遍历函数,最后递归右子树。这种遍历方法是根据使用GCompareFunc函数从最小到最大遍历。

* G_PRE_ORDER (先序遍历)对当前节点的键值对调用遍历函数,然后递归左子树,最后递归右子树。

* G_POST_ORDER (后序遍历)先递归左子树,然后递归右子树,最后对当前节点的键值对调用遍历函数。

* G_LEVEL_ORDER (水平遍历)GTree中不允许使用,只能用在Gnode中。

 

函数列表: 遍历GTree

#include <glib.h>

void g_tree_traverse( GTree* tree,

                        GTraverseFunc traverse_func,

                        GTraverseType traverse_type,

                        gpointer data )

 


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多