宏列表:判断Gn 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 )快捷方式。
函数列表:取得GN o d e属性
#include<glib.h>
guintg_node_n_nodes(GNode* root,GTraverseFlags flags)
GNode*g_node_get_root(GNode* node)
Gbooleang_node_is_ancestor(GNode* node,GNode* descendant)
Guintg_node_depth(GNode* node)
GNode*g_node_find(GNode* root,GTraverseType order,GTraverseFlagsflags,gpointer data)
GNode有两个独有的函数类型定义:
typedefgboolean (*GNodeTraverseFunc) (GNode* node, gpointer data);
typedefvoid (*GNodeForeachFunc) (GNode* node, gpointer data);
这些函数调用以要访问的节点指针以及用户数据作为参数。GNodeTraverseFunc返回TRUE,停止任何正在进行的遍历,
这样就能将GnodeTraverseFunc与g_node_traverse()结合起来按值搜索树。
函数列表:访问GNode
#include<glib.h>
/*对Gnode进行遍历*/
voidg_node_traverse( GNode* root,
GTraverseTypeorder,
GTraverseFlagsflags,
gintmax_depth,
GNodeTraverseFuncfunc,
gpointerdata )
/*返回GNode的最大高度*/
guintg_node_max_height(GNode* root)
/*对Gnode的每个子节点调用一次fu n c函数*/
voidg_node_children_foreach( GNode* node,
GTraverseFlagsflags,
GNodeForeachFuncfunc,
gpointerdata )
/*颠倒node的子节点顺序*/
voidg_node_reverse_children(GNode* node)
/*返回节点node的子节点个数*/
guintg_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中查找值为da t e的节点*/
GNode*g_node_find_child(GNode* node,GTraverseFlags flags,gpointer data)
/*返回子节点child在node中的位置*/
gintg_node_child_position(GNode* node,GNode* child)
/*返回数据data在node中的索引号*/
gintg_node_child_index(GNode* node,gpointer data)
/*以子节点形式返回node的第一个兄弟节点*/
GNode*g_node_first_sibling(GNode* node)
/*以子节点形式返回node的第一个兄弟节点*/
GNode*g_node_last_sibling(GNode* node)
联系客服