宏列表:判断G n o d e的类型 #include <glib.h> G_NODE_IS_ROOT ( node ) G_NODE_IS_LEAF ( node )
下面函数列表中的函数返回Gnode的一些有用信息,包括它的节点数、根节点、深度以及含有特定数据指针的节点。 其中的遍历类型GtraverseType在Gtree中介绍过。 下面是在Gnode中它的可能取值: * G_IN_ORDER 先递归节点最左边的子树,并访问节点本身,然后递归节点子树的其他部分。 这不是很有用,因为多数情况用于Gtree中。 * G_PRE_ORDER 访问当前节点,然后递归每一个子树。 * G_POST_ORDER 按序递归每个子树,然后访问当前节点。 * G_LEVEL_ORDER 首先访问节点本身,然后每个子树,然后子树的子树,然后子树的子树的子树,以次类推。 也就是说,它先访问深度为0的节点,然后是深度为1,然后是深度为2,等等。 GNode的树遍历函数有一个GTraverseFlags参数。这是一个位域,用来改变遍历的种类。 当前仅有三个标志—只访问叶节点,非叶节点,或者所有节点: * G_TRAVERSE_LEAFS 指仅遍历叶节点。 * G_TRAVERSE_NON_LEAFS 指仅遍历非叶节点。 * G_TRAVERSE_ALL 只是指( G_TRAVERSE_LEAFS | G_TRAVERSE_NON_LEAFS )快捷方式。
函数列表: 取得G N o d e属性 #include <glib.h> guint g_node_n_nodes(GNode* root,GTraverseFlags flags) GNode* g_node_get_root(GNode* node) Gboolean g_node_is_ancestor(GNode* node,GNode* descendant) Guint g_node_depth(GNode* node) GNode* g_node_find(GNode* root,GTraverseType order,GTraverseFlags flags,gpointer data)
GNode有两个独有的函数类型定义: typedef gboolean (*GNodeTraverseFunc) (GNode* node, gpointer data); typedef void (*GNodeForeachFunc) (GNode* node, gpointer data); 这些函数调用以要访问的节点指针以及用户数据作为参数。GNodeTraverseFunc返回TRUE,停止任何正在进行的遍历,
这样就能将GnodeTraverseFunc与g_node_traverse()结合起来按值搜索树。
函数列表: 访问GNode #include <glib.h> / *对Gnode进行遍历* / void g_node_traverse( GNode* root, GTraverseType order, GTraverseFlags flags, gint max_depth, GNodeTraverseFunc func, gpointer data ) / *返回GNode的最大高度* / guint g_node_max_height(GNode* root) / *对Gnode的每个子节点调用一次f u n c函数* / void g_node_children_foreach( GNode* node, GTraverseFlags flags, GNodeForeachFunc func, gpointer data ) / *颠倒node的子节点顺序* / void g_node_reverse_children(GNode* node) / *返回节点node的子节点个数* / guint g_node_n_children(GNode* node) / *返回node的第n个子节点* / GNode* g_node_nth_child(GNode* node,guint n) / *返回node的最后一个子节点* / GNode* g_node_last_child(GNode* node) / *在node中查找值为d a t e的节点* / GNode* g_node_find_child(GNode* node,GTraverseFlags flags,gpointer data) / *返回子节点child在node中的位置* / gint g_node_child_position(GNode* node,GNode* child) / *返回数据data在node中的索引号* / gint g_node_child_index(GNode* node,gpointer data) / *以子节点形式返回node的第一个兄弟节点* / GNode* g_node_first_sibling(GNode* node) / *以子节点形式返回node的第一个兄弟节点* / GNode* g_node_last_sibling(GNode* node) |
|