mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-04-25 00:26:52 +02:00
234 lines
4.0 KiB
Plaintext
234 lines
4.0 KiB
Plaintext
<!-- ##### SECTION Title ##### -->
|
|
Balanced Binary Trees
|
|
|
|
<!-- ##### SECTION Short_Description ##### -->
|
|
a sorted collection of key/value pairs optimized for searching
|
|
and traversing in order.
|
|
|
|
<!-- ##### SECTION Long_Description ##### -->
|
|
<para>
|
|
The #GTree structure and its associated functions provide a sorted collection
|
|
of key/value pairs optimized for searching and traversing in order.
|
|
</para>
|
|
<para>
|
|
To create a new #GTree use g_tree_new().
|
|
</para>
|
|
<para>
|
|
To insert a key/value pair into a #GTree use g_tree_insert().
|
|
</para>
|
|
<para>
|
|
To lookup the value corresponding to a given key, use g_tree_lookup() and
|
|
g_tree_lookup_extended().
|
|
</para>
|
|
<para>
|
|
To find out the number of nodes in a #GTree, use g_tree_nnodes().
|
|
To get the height of a #GTree, use g_tree_height().
|
|
</para>
|
|
<para>
|
|
To traverse a #GTree, calling a function for each node visited in the
|
|
traversal, use g_tree_foreach().
|
|
</para>
|
|
<para>
|
|
To remove a key/value pair use g_tree_remove().
|
|
</para>
|
|
<para>
|
|
To destroy a #GTree, use g_tree_destroy().
|
|
</para>
|
|
|
|
<!-- ##### SECTION See_Also ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
<!-- ##### SECTION Stability_Level ##### -->
|
|
|
|
|
|
<!-- ##### STRUCT GTree ##### -->
|
|
<para>
|
|
The <structname>GTree</structname> struct is an opaque data structure representing a
|
|
<link linkend="glib-Balanced-Binary-Trees">Balanced Binary Tree</link>.
|
|
It should be accessed only by using the following functions.
|
|
</para>
|
|
|
|
|
|
<!-- ##### FUNCTION g_tree_new ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@key_compare_func:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_tree_new_with_data ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@key_compare_func:
|
|
@key_compare_data:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_tree_new_full ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@key_compare_func:
|
|
@key_compare_data:
|
|
@key_destroy_func:
|
|
@value_destroy_func:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_tree_insert ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@tree:
|
|
@key:
|
|
@value:
|
|
|
|
|
|
<!-- ##### FUNCTION g_tree_replace ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@tree:
|
|
@key:
|
|
@value:
|
|
|
|
|
|
<!-- ##### FUNCTION g_tree_nnodes ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@tree:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_tree_height ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@tree:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_tree_lookup ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@tree:
|
|
@key:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_tree_lookup_extended ##### -->
|
|
|
|
|
|
@tree:
|
|
@lookup_key:
|
|
@orig_key:
|
|
@value:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_tree_foreach ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@tree:
|
|
@func:
|
|
@user_data:
|
|
|
|
|
|
<!-- ##### FUNCTION g_tree_traverse ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@tree:
|
|
@traverse_func:
|
|
@traverse_type:
|
|
@user_data:
|
|
|
|
|
|
<!-- ##### USER_FUNCTION GTraverseFunc ##### -->
|
|
<para>
|
|
Specifies the type of function passed to g_tree_traverse().
|
|
It is passed the key and value of each node, together with
|
|
the @user_data parameter passed to g_tree_traverse().
|
|
If the function returns %TRUE, the traversal is stopped.
|
|
</para>
|
|
|
|
@key: a key of a #GTree node.
|
|
@value: the value corresponding to the key.
|
|
@data: user data passed to g_tree_traverse().
|
|
@Returns: %TRUE to stop the traversal.
|
|
|
|
|
|
<!-- ##### ENUM GTraverseType ##### -->
|
|
<para>
|
|
Specifies the type of traveral performed by g_tree_traverse(),
|
|
g_node_traverse() and g_node_find().
|
|
</para>
|
|
|
|
@G_IN_ORDER: vists a node's left child first, then the node itself, then its
|
|
right child. This is the one to use if you want the output sorted according
|
|
to the compare function.
|
|
@G_PRE_ORDER: visits a node, then its children.
|
|
@G_POST_ORDER: visits the node's children, then the node itself.
|
|
@G_LEVEL_ORDER: is not implemented for
|
|
<link linkend="glib-Balanced-Binary-Trees">Balanced Binary Trees</link>.
|
|
For <link linkend="glib-N-ary-Trees">N-ary Trees</link>, it vists the root
|
|
node first, then its children, then its grandchildren, and so on. Note that
|
|
this is less efficient than the other orders.
|
|
|
|
<!-- ##### FUNCTION g_tree_search ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@tree:
|
|
@search_func:
|
|
@user_data:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_tree_remove ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@tree:
|
|
@key:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_tree_steal ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@tree:
|
|
@key:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION g_tree_destroy ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@tree:
|
|
|
|
|