-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN"[]>
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
+[
+<!ENTITY % MATHML.prefixed "INCLUDE">
+<!ENTITY % MATHML.prefix "mml">
+<!ENTITY % equation.content "(alt?, (graphic+|mediaobject+|mml:math))">
+<!ENTITY % inlineequation.content
+ "(alt?, (inlinegraphic+|inlinemediaobject+|mml:math))">
+<!ENTITY % mathml PUBLIC "-//W3C//DTD MathML 2.0//EN"
+ "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">
+%mathml;
+]>
<book id="GAVLdoc">
<bookinfo>
} cust2_item_t;
typedef struct cust2_root {
- gavl_node_t *my_root;
+ gavl_cust_root_field_t my_root;
/* more user root/tree data ... */
} cust2_root_t;
<para>
As can be seen from above code fragment, the key field with user declared
type (<type>cust_key_t</type>) and internal node structure are required
- for items. The only one field with type <type>gavl_node_t</type>* is required
+ for items. The only one field with type <type>gavl_cust_root_field_t</type> is required
for the custom tree root structure.
</para>
<para>
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation>. The height of subtree starting at
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> is labeled as
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation>. Height difference (balance factor) for node
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> is labeled as
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation>.
<title>Tree balancing case 1</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="fig/gavl_t11.pdf" format="EPS" scale="75" >
+ <imagedata align="center" fileref="fig/gavl_t11.pdf" format="EPS" scale="75" />
</imageobject>
<imageobject>
- <imagedata align="center" fileref="fig/gavl_t11.gif" format="GIF" scale="75" >
+ <imagedata align="center" fileref="fig/gavl_t11.gif" format="GIF" scale="75" />
</imageobject>
<caption><para>Before operation</para></caption>
</mediaobject>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="fig/gavl_t12.pdf" format="EPS" scale="75" >
+ <imagedata align="center" fileref="fig/gavl_t12.pdf" format="EPS" scale="75" />
</imageobject>
<imageobject>
- <imagedata align="center" fileref="fig/gavl_t12.gif" format="GIF" scale="75" >
+ <imagedata align="center" fileref="fig/gavl_t12.gif" format="GIF" scale="75" />
</imageobject>
<caption><para>After operation</para></caption>
</mediaobject>
</alt>
<mediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</mediaobject>
</equation> The height of subtree
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> is defined by highest branch, which is branch grovinggrowing from node
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation>. This leads to next equations.
</alt>
<mediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</mediaobject>
</equation>The height of branches
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> and
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> is marked as
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> and
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> after balancing.
</alt>
<mediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</mediaobject>
</equation>
</alt>
<mediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</mediaobject>
</equation>
</alt>
<mediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</mediaobject>
</equation>Because balancing in case 1 does not guarantee that new tree has lower height than original tree, it is necessary to compute tree height change (tree height lowering).
</alt>
<mediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</mediaobject>
</equation></para></sect2>
<title>Tree balancing case 2</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="fig/gavl_t21.pdf" format="EPS" scale="75" >
+ <imagedata align="center" fileref="fig/gavl_t21.pdf" format="EPS" scale="75" />
</imageobject>
<imageobject>
- <imagedata align="center" fileref="fig/gavl_t21.gif" format="GIF" scale="75" >
+ <imagedata align="center" fileref="fig/gavl_t21.gif" format="GIF" scale="75" />
</imageobject>
<caption><para>Before operation</para></caption>
</mediaobject>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="fig/gavl_t22.pdf" format="EPS" scale="75" >
+ <imagedata align="center" fileref="fig/gavl_t22.pdf" format="EPS" scale="75" />
</imageobject>
<imageobject>
- <imagedata align="center" fileref="fig/gavl_t22.gif" format="GIF" scale="75" >
+ <imagedata align="center" fileref="fig/gavl_t22.gif" format="GIF" scale="75" />
</imageobject>
<caption><para>After operation</para></caption>
</mediaobject>
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation>
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> or
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation>
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation>.
</alt>
<mediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</mediaobject>
</equation>
</alt>
<mediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</mediaobject>
</equation>
</alt>
<mediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</mediaobject>
</equation>When
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> then the height differences
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation>,
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> and
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> for nodes
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation>,
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> and
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> of the balanced tree can be computed from next equations.
</alt>
<mediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</mediaobject>
</equation>When
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> then the height differences
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation>,
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> and
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> for nodes
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation>,
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> and
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> of the balanced tree can be computed from next equations.
</alt>
<mediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</mediaobject>
</equation></para></sect2>
</alt>
<inlinemediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</inlinemediaobject>
</inlineequation> can be computed recursively.
</alt>
<mediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</mediaobject>
</equation>1, 2, 4, 7, 12, 20, 33, 54, 88, 143, 232, 376, 609, 986</para><para>
</alt>
<mediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</mediaobject>
</equation>
</alt>
<mediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</mediaobject>
</equation>
</alt>
<mediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</mediaobject>
</equation>
</alt>
<mediaobject>
<imageobject>
- <imagedata fileref="img/gavl_eq1.gif" format="GIF">
+ <imagedata fileref="img/gavl_eq1.gif" format="GIF"/>
</imageobject>
</mediaobject>
</equation></para><para>An AVL tree with n nodes has height between log2 (n + 1) and 1.44 * log2 (n + 2) - 0.328. An AVL tree with height h has between pow (2, (h + .328) / 1.44) - 1 and pow (2, h) - 1 nodes.</para><para>A red-black tree with n nodes has height at least log2 (n + 1) but no more than 2 * log2 (n + 1). A red-black tree with height h has at least pow (2, h / 2) - 1 nodes but no more than pow (2, h) - 1. </para>