[glib] More GTree and GNode formatting and documentation fixes
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] More GTree and GNode formatting and documentation fixes
- Date: Mon, 20 Jan 2014 04:50:37 +0000 (UTC)
commit 647412603a6f888bf9ed6b56a6827fa36d421584
Author: Matthias Clasen <mclasen redhat com>
Date: Sun Jan 19 23:49:12 2014 -0500
More GTree and GNode formatting and documentation fixes
Among other things, add images for tree traversal types,
taken from Wikimedia Commons.
docs/reference/glib/Makefile.am | 14 +-
.../Sorted_binary_tree_breadth-first_traversal.svg | 134 ++++
docs/reference/glib/Sorted_binary_tree_inorder.svg | 753 ++++++++++++++++++++
.../glib/Sorted_binary_tree_postorder.svg | 750 +++++++++++++++++++
.../reference/glib/Sorted_binary_tree_preorder.svg | 750 +++++++++++++++++++
glib/gnode.c | 53 ++
glib/gtree.c | 593 ++++++++--------
7 files changed, 2741 insertions(+), 306 deletions(-)
---
diff --git a/docs/reference/glib/Makefile.am b/docs/reference/glib/Makefile.am
index 2879607..a0cc57b 100644
--- a/docs/reference/glib/Makefile.am
+++ b/docs/reference/glib/Makefile.am
@@ -53,9 +53,13 @@ IGNORE_HFILES = \
gwakeup.h
# Images to copy into HTML directory
-HTML_IMAGES = \
- file-name-encodings.png \
- mainloop-states.gif
+HTML_IMAGES = \
+ file-name-encodings.png \
+ mainloop-states.gif \
+ Sorted_binary_tree_breadth-first_traversal.svg \
+ Sorted_binary_tree_inorder.svg \
+ Sorted_binary_tree_postorder.svg \
+ Sorted_binary_tree_preorder.svg
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE)
content_files = \
@@ -90,6 +94,10 @@ EXTRA_DIST += \
mainloop-states.fig \
mainloop-states.png \
mainloop-states.eps \
+ Sorted_binary_tree_breadth-first_traversal.svg \
+ Sorted_binary_tree_inorder.svg \
+ Sorted_binary_tree_postorder.svg \
+ Sorted_binary_tree_preorder.svg \
version.xml.in
########################################################################
diff --git a/docs/reference/glib/Sorted_binary_tree_breadth-first_traversal.svg
b/docs/reference/glib/Sorted_binary_tree_breadth-first_traversal.svg
new file mode 100644
index 0000000..697d7db
--- /dev/null
+++ b/docs/reference/glib/Sorted_binary_tree_breadth-first_traversal.svg
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="266px" height="212px" viewBox="0 0 266 212" enable-background="new 0 0 266 212"
xml:space="preserve">
+<g>
+ <g>
+ <line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" x1="27.23"
y1="23.192" x2="29.23" y2="23.192"/>
+
+ <line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10"
stroke-dasharray="3.9562,3.9562" x1="33.187" y1="23.192" x2="236.932" y2="23.192"/>
+ <polyline fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10"
points="238.91,23.192 240.91,23.192
+ 238.97,23.677 "/>
+
+ <line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10"
stroke-dasharray="3.9907,3.9907" x1="235.099" y1="24.646" x2="27.971" y2="76.427"/>
+ <polyline fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10"
points="26.035,76.912 24.095,77.396
+ 26.095,77.396 "/>
+
+ <line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10"
stroke-dasharray="4.0154,4.0154" x1="30.11" y1="77.396" x2="236.902" y2="77.396"/>
+ <polyline fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10"
points="238.91,77.396 240.91,77.396
+ 238.97,77.881 "/>
+
+ <line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10"
stroke-dasharray="3.9907,3.9907" x1="235.099" y1="78.85" x2="27.971" y2="130.631"/>
+ <polyline fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10"
points="26.035,131.114 24.095,131.6
+ 26.095,131.6 "/>
+
+ <line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10"
stroke-dasharray="4.0154,4.0154" x1="30.11" y1="131.6" x2="236.902" y2="131.6"/>
+ <polyline fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10"
points="238.91,131.6 240.91,131.6
+ 238.97,132.085 "/>
+
+ <line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10"
stroke-dasharray="3.9907,3.9907" x1="235.099" y1="133.053" x2="27.971" y2="184.835"/>
+ <polyline fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10"
points="26.035,185.318 24.095,185.804
+ 26.095,185.804 "/>
+
+ <line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10"
stroke-dasharray="4.0086,4.0086" x1="30.104" y1="185.804" x2="228.53" y2="185.804"/>
+
+ <line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10"
x1="230.534" y1="185.804" x2="232.534" y2="185.804"/>
+ <g>
+ <rect x="24.095" y="19.892" width="6.602" height="6.602"/>
+ </g>
+ <g>
+ <path d="M238.569,185.804c-2.84,1.054-6.363,2.852-8.548,4.756l1.721-4.756l-1.721-4.755
+ C232.206,182.953,235.729,184.751,238.569,185.804z"/>
+ </g>
+ </g>
+</g>
+<g id="graph0">
+ <title>sorted_binary_tree</title>
+ <g id="node1">
+ <title>C</title>
+ <ellipse fill="#FFFFFF" stroke="#000000" cx="60.23" cy="185.804" rx="18.067" ry="18.067"/>
+ <text transform="matrix(1 0 0 1 55.5435 190.8223)" font-family="'Times-Roman'"
font-size="14.0528">C</text>
+ </g>
+ <g id="node2">
+ <title>E</title>
+ <ellipse fill="#FFFFFF" stroke="#000000" cx="132.502" cy="185.804" rx="18.067" ry="18.067"/>
+ <text transform="matrix(1 0 0 1 128.21 190.8223)" font-family="'Times-Roman'"
font-size="14.0528">E</text>
+ </g>
+ <g id="node3">
+ <title>H</title>
+ <ellipse fill="#FFFFFF" stroke="#000000" cx="204.773" cy="185.804" rx="17.064" ry="18.067"/>
+ <text transform="matrix(1 0 0 1 199.6992 190.8223)" font-family="'Times-Roman'"
font-size="14.0528">H</text>
+ </g>
+ <g id="node4">
+ <title>A</title>
+ <ellipse fill="#FFFFFF" stroke="#000000" cx="24.094" cy="131.6" rx="17.064" ry="18.068"/>
+ <text transform="matrix(1 0 0 1 19.02 136.6191)" font-family="'Times-Roman'"
font-size="14.0528">A</text>
+ </g>
+ <g id="node5">
+ <title>D</title>
+ <ellipse fill="#FFFFFF" stroke="#000000" cx="96.366" cy="131.6" rx="17.064" ry="18.068"/>
+ <text transform="matrix(1 0 0 1 91.292 136.6191)" font-family="'Times-Roman'"
font-size="14.0528">D</text>
+ </g>
+ <g id="edge6">
+ <title>D->C</title>
+ <path fill="none" stroke="#000000" d="M86.328,147.66c-3.011,4.016-7.026,9.034-10.038,14.053"/>
+ <polygon stroke="#000000" points="78.298,164.725 70.268,170.747 73.279,160.709 "/>
+ </g>
+ <g id="edge8">
+ <title>D->E</title>
+ <path fill="none" stroke="#000000" d="M106.404,147.66c3.011,4.016,7.026,9.034,10.038,14.053"/>
+ <polygon stroke="#000000" points="119.453,160.709 122.464,170.747 114.434,164.725
"/>
+ </g>
+ <g id="node6">
+ <title>I</title>
+ <ellipse fill="#FFFFFF" stroke="#000000" cx="240.909" cy="131.6" rx="18.068" ry="18.068"/>
+ <text transform="matrix(1 0 0 1 238.5693 136.6191)" font-family="'Times-Roman'"
font-size="14.0528">I</text>
+ </g>
+ <g id="edge12">
+ <title>I->H</title>
+ <path fill="none" stroke="#000000"
d="M230.871,146.656c-3.011,5.02-6.021,10.038-10.037,15.057"/>
+ <polygon stroke="#000000" points="223.846,163.721 214.812,169.743 217.822,159.705
"/>
+ </g>
+ <g id="node7">
+ <title>B</title>
+ <ellipse fill="#FFFFFF" stroke="#000000" cx="60.23" cy="77.396" rx="18.068" ry="18.068"/>
+ <text transform="matrix(1 0 0 1 55.5435 82.415)" font-family="'Times-Roman'"
font-size="14.0528">B</text>
+ </g>
+ <g id="edge3">
+ <title>B->A</title>
+ <path fill="none" stroke="#000000"
d="M50.192,92.453c-3.011,5.019-6.022,10.038-10.038,15.057"/>
+ <polygon stroke="#000000" points="43.166,109.518 34.132,115.539 37.144,105.502 "/>
+ </g>
+ <g id="edge5">
+ <title>B->D</title>
+ <path fill="none" stroke="#000000" d="M70.268,92.453c3.011,5.019,6.022,10.038,10.038,15.057"/>
+ <polygon stroke="#000000" points="83.317,105.502 86.328,115.539 77.294,109.518 "/>
+ </g>
+ <g id="node8">
+ <title>G</title>
+ <ellipse fill="#FFFFFF" stroke="#000000" cx="204.773" cy="77.396" rx="17.064" ry="18.068"/>
+ <text transform="matrix(1 0 0 1 199.6992 82.415)" font-family="'Times-Roman'"
font-size="14.0528">G</text>
+ </g>
+ <g id="edge11">
+ <title>G->I</title>
+ <path fill="none" stroke="#000000" d="M214.812,93.457c3.011,4.015,7.026,9.034,10.038,14.053"/>
+ <polygon stroke="#000000" points="227.86,106.506 230.871,116.543 222.842,110.521
"/>
+ </g>
+ <g id="node9">
+ <title>F</title>
+ <ellipse fill="#FFFFFF" stroke="#000000" cx="132.502" cy="23.192" rx="18.068" ry="18.068"/>
+ <text transform="matrix(1 0 0 1 128.5942 28.2109)" font-family="'Times-Roman'"
font-size="14.0528">F</text>
+ </g>
+ <g id="edge2">
+ <title>F->B</title>
+ <path fill="none" stroke="#000000"
d="M117.445,34.234c-11.042,8.03-23.087,17.064-34.128,26.098"/>
+ <polygon stroke="#000000" points="85.325,63.343 75.287,66.354 81.31,57.321 "/>
+ </g>
+ <g id="edge10">
+ <title>F->G</title>
+ <path fill="none" stroke="#000000"
d="M147.559,34.234c11.041,8.03,23.087,17.064,34.129,26.098"/>
+ <polygon stroke="#000000" points="183.694,57.321 189.717,66.354 179.68,63.343 "/>
+ </g>
+</g>
+</svg>
diff --git a/docs/reference/glib/Sorted_binary_tree_inorder.svg
b/docs/reference/glib/Sorted_binary_tree_inorder.svg
new file mode 100644
index 0000000..3927430
--- /dev/null
+++ b/docs/reference/glib/Sorted_binary_tree_inorder.svg
@@ -0,0 +1,753 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="266"
+ height="226.79848"
+ id="svg3953"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="Sorted_binary_tree_inorder.svg"
+ inkscape:export-filename="/home/mclasen/Sources/glib/docs/reference/glib/Sorted_binary_tree_inorder.png"
+ inkscape:export-xdpi="60.543114"
+ inkscape:export-ydpi="60.543114">
+ <defs
+ id="defs3955">
+ <marker
+ inkscape:stockid="SquareL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="SquareL"
+ style="overflow:visible">
+ <path
+ id="path4940"
+ d="M -5,-5 -5,5 5,5 5,-5 -5,-5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="DistanceStart"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="DistanceStart">
+ <g
+ id="g2300">
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square"
+ d="M 0,0 2,0"
+ id="path2306"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#000000;fill-rule:evenodd;stroke:none"
+ d="M 0,0 13,4 9,0 13,-4 0,0 z"
+ id="path2302"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square"
+ d="M 0,-4 0,40"
+ id="path2304"
+ inkscape:connector-curvature="0" />
+ </g>
+ </marker>
+ <marker
+ inkscape:stockid="DotL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="DotL"
+ style="overflow:visible">
+ <path
+ id="path4931"
+ d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
+ transform="matrix(0.8,0,0,0.8,5.92,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path4890"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609
-1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible">
+ <path
+ id="path4869"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3961" />
+ <inkscape:perspective
+ id="perspective3971"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:path-effect
+ effect="spiro"
+ id="path-effect2940"
+ is_visible="true" />
+ <inkscape:path-effect
+ effect="skeletal"
+ id="path-effect2942"
+ is_visible="true"
+ pattern="m 187.18135,13.365063 1,0"
+ copytype="single_stretched"
+ prop_scale="1"
+ scale_y_rel="false"
+ spacing="0"
+ normal_offset="0"
+ tang_offset="0"
+ prop_units="false"
+ vertical_pattern="false"
+ fuse_tolerance="0" />
+ <inkscape:perspective
+ id="perspective4212"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-7"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-5"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-76"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-2"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-22"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-8"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4852"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective5886"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-7"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-4"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-1"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-3"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-11"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-74"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-79"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-9"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-6"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.4"
+ inkscape:cx="-5.5963911"
+ inkscape:cy="76.419161"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1366"
+ inkscape:window-height="702"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+ <metadata
+ id="metadata3958">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-275.57143,-78.931534)">
+ <g
+ transform="matrix(0.9925764,0,0,0.9925764,278.52645,98.594058)"
+ id="graph0"
+ class="graph"
+ style="font-size:14px;font-family:Times-Roman">
+ <title
+ id="title5">sorted_binary_tree</title>
+ <g
+ id="node1"
+ class="node">
+ <title
+ id="title8">C</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="18"
+ sodipodi:cy="185"
+ sodipodi:cx="60"
+ d="m 78,185 c 0,9.94113 -8.058875,18 -18,18 -9.941125,0 -18,-8.05887 -18,-18 0,-9.94113
8.058875,-18 18,-18 9.941125,0 18,8.05887 18,18 z"
+ cx="60"
+ cy="185"
+ rx="18"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse10" />
+ <text
+ style="text-anchor:middle"
+ x="60"
+ y="190"
+ id="text12">C</text>
+ </g>
+ <g
+ id="node2"
+ class="node">
+ <title
+ id="title15">E</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="18"
+ sodipodi:cy="185"
+ sodipodi:cx="132"
+ d="m 150,185 c 0,9.94113 -8.05887,18 -18,18 -9.94113,0 -18,-8.05887 -18,-18 0,-9.94113
8.05887,-18 18,-18 9.94113,0 18,8.05887 18,18 z"
+ cx="132"
+ cy="185"
+ rx="18"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse17" />
+ <text
+ style="text-anchor:middle"
+ x="132"
+ y="190"
+ id="text19">E</text>
+ </g>
+ <g
+ id="node3"
+ class="node">
+ <title
+ id="title22">H</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="17"
+ sodipodi:cy="185"
+ sodipodi:cx="204"
+ d="m 221,185 c 0,9.94113 -7.61116,18 -17,18 -9.38884,0 -17,-8.05887 -17,-18 0,-9.94113
7.61116,-18 17,-18 9.38884,0 17,8.05887 17,18 z"
+ cx="204"
+ cy="185"
+ rx="17"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse24" />
+ <text
+ style="text-anchor:middle"
+ x="204"
+ y="190"
+ id="text26">H</text>
+ </g>
+ <g
+ id="node4"
+ class="node">
+ <title
+ id="title29">A</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="17"
+ sodipodi:cy="131"
+ sodipodi:cx="24"
+ d="m 41,131 c 0,9.94113 -7.611159,18 -17,18 -9.388841,0 -17,-8.05887 -17,-18 0,-9.94113
7.611159,-18 17,-18 9.388841,0 17,8.05887 17,18 z"
+ cx="24"
+ cy="131"
+ rx="17"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse31" />
+ <text
+ style="text-anchor:middle"
+ x="24"
+ y="136"
+ id="text33">A</text>
+ </g>
+ <g
+ id="node5"
+ class="node">
+ <title
+ id="title36">D</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="17"
+ sodipodi:cy="131"
+ sodipodi:cx="96"
+ d="m 113,131 c 0,9.94113 -7.61116,18 -17,18 -9.388841,0 -17,-8.05887 -17,-18 0,-9.94113
7.611159,-18 17,-18 9.38884,0 17,8.05887 17,18 z"
+ cx="96"
+ cy="131"
+ rx="17"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse38" />
+ <text
+ style="text-anchor:middle"
+ x="96"
+ y="136"
+ id="text40">D</text>
+ </g>
+ <g
+ id="edge6"
+ class="edge">
+ <title
+ id="title43">D->C</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 86,147 c -3,4 -7,9 -10,14"
+ id="path45"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="78,164 70,170 73,160 78,164 "
+ id="polygon47" />
+ </g>
+ <g
+ id="edge8"
+ class="edge">
+ <title
+ id="title50">D->E</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 106,147 c 3,4 7,9 10,14"
+ id="path52"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="119,160 122,170 114,164 119,160 "
+ id="polygon54" />
+ </g>
+ <g
+ id="node6"
+ class="node">
+ <title
+ id="title57">I</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="18"
+ sodipodi:cy="131"
+ sodipodi:cx="240"
+ d="m 258,131 c 0,9.94113 -8.05887,18 -18,18 -9.94113,0 -18,-8.05887 -18,-18 0,-9.94113
8.05887,-18 18,-18 9.94113,0 18,8.05887 18,18 z"
+ cx="240"
+ cy="131"
+ rx="18"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse59" />
+ <text
+ style="text-anchor:middle"
+ x="240"
+ y="136"
+ id="text61">I</text>
+ </g>
+ <g
+ id="edge12"
+ class="edge">
+ <title
+ id="title64">I->H</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 230,146 c -3,5 -6,10 -10,15"
+ id="path66"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="223,163 214,169 217,159 223,163 "
+ id="polygon68" />
+ </g>
+ <g
+ id="node7"
+ class="node">
+ <title
+ id="title71">B</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="18"
+ sodipodi:cy="77"
+ sodipodi:cx="60"
+ d="m 78,77 c 0,9.941125 -8.058875,18 -18,18 -9.941125,0 -18,-8.058875 -18,-18 0,-9.941125
8.058875,-18 18,-18 9.941125,0 18,8.058875 18,18 z"
+ cx="60"
+ cy="77"
+ rx="18"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse73" />
+ <text
+ style="text-anchor:middle"
+ x="60"
+ y="82"
+ id="text75">B</text>
+ </g>
+ <g
+ id="edge3"
+ class="edge">
+ <title
+ id="title78">B->A</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 50,92 c -3,5 -6,10 -10,15"
+ id="path80"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="43,109 34,115 37,105 43,109 "
+ id="polygon82" />
+ </g>
+ <g
+ id="edge5"
+ class="edge">
+ <title
+ id="title85">B->D</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 70,92 c 3,5 6,10 10,15"
+ id="path87"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="83,105 86,115 77,109 83,105 "
+ id="polygon89" />
+ </g>
+ <g
+ id="node8"
+ class="node">
+ <title
+ id="title92">G</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="17"
+ sodipodi:cy="77"
+ sodipodi:cx="204"
+ d="m 221,77 c 0,9.941125 -7.61116,18 -17,18 -9.38884,0 -17,-8.058875 -17,-18 0,-9.941125
7.61116,-18 17,-18 9.38884,0 17,8.058875 17,18 z"
+ cx="204"
+ cy="77"
+ rx="17"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse94" />
+ <text
+ style="text-anchor:middle"
+ x="204"
+ y="82"
+ id="text96">G</text>
+ </g>
+ <g
+ id="edge11"
+ class="edge">
+ <title
+ id="title99">G->I</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 214,93 c 3,4 7,9 10,14"
+ id="path101"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="227,106 230,116 222,110 227,106 "
+ id="polygon103" />
+ </g>
+ <g
+ id="node9"
+ class="node">
+ <title
+ id="title106">F</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="18"
+ sodipodi:cy="23"
+ sodipodi:cx="132"
+ d="m 150,23 c 0,9.941125 -8.05887,18 -18,18 -9.94113,0 -18,-8.058875 -18,-18 0,-9.941125
8.05887,-18 18,-18 9.94113,0 18,8.058875 18,18 z"
+ cx="132"
+ cy="23"
+ rx="18"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse108" />
+ <text
+ style="text-anchor:middle"
+ x="132"
+ y="28"
+ id="text110">F</text>
+ </g>
+ <g
+ id="edge2"
+ class="edge">
+ <title
+ id="title113">F->B</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="M 117,34 C 106,42 94,51 83,60"
+ id="path115"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="85,63 75,66 81,57 85,63 "
+ id="polygon117" />
+ </g>
+ <g
+ id="edge10"
+ class="edge">
+ <title
+ id="title120">F->G</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 147,34 c 11,8 23,17 34,26"
+ id="path122"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="183,57 189,66 179,63 183,57 "
+ id="polygon124" />
+ </g>
+ </g>
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.82904756;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3.31619022,
3.31619022;stroke-dashoffset:0;marker-start:url(#SquareL);marker-end:url(#Arrow2Lend)"
+ d="m 407.86585,83.916245 c -8.09235,12.934463 -16.24193,25.833125 -24.4484,38.695485 -4.10893,6.44009
-8.28,12.93078 -13.72464,18.28932 -5.44312,5.35704 -12.35084,9.56414 -19.94187,10.40186 -3.3055,0.36478
-6.64352,0.0886 -9.9615,-0.13591 -1e-5,0 -3e-5,0 -4e-5,0 -3.30753,-0.22377 -6.65223,-0.39935 -9.91915,0.16371
-3.67892,0.63407 -7.19225,2.2113 -10.11083,4.53904 -10e-6,1e-5 -2e-5,2e-5 -3e-5,2e-5 -2.91857,2.32774
-5.23772,5.40225 -6.67417,8.84797 -1.43645,3.44574 -1.98788,7.25719 -1.58695,10.96875 0.40093,3.71157
1.75359,7.31733 3.89275,10.37682 -1.57329,7.77579 -6.47676,14.83297 -13.21535,19.01981 -4.08578,2.53859
-8.72148,4.0255 -13.0897,6.03963 -2e-5,0 -3e-5,1e-5 -4e-5,2e-5 -4.36719,2.01365 -8.65699,4.73894
-11.05709,8.90627 -10e-6,1e-5 -10e-6,2e-5 -2e-5,3e-5 -1.54971,2.69079 -2.21037,5.86275 -2.00701,8.96123
0.20338,3.09874 1.25331,6.121 2.89275,8.75838 3.2781,5.27351 8.79594,8.88365 14.67878,10.8706 10e-6,0
2e-5,1e-5 4e-5,1e-5 5.05172,1.70623 10.53116,2.32159 15
.76564,1.30607 1e-5,-1e-5 2e-5,-1e-5 3e-5,-1e-5 5.23327,-1.0153 10.20383,-3.73183 13.53666,-7.89237
2.8325,-3.53596 4.39168,-7.94004 5.28933,-12.38079 0,-1e-5 10e-6,-3e-5 10e-6,-4e-5 0.89772,-4.44111
1.18109,-8.97997 1.75051,-13.47498 0.87253,-6.88777 2.42162,-13.6897 4.61772,-20.27603 2.52197,-0.49612
5.17081,-0.33611 7.61472,0.45997 2.44389,0.79608 4.67875,2.2269 6.42464,4.11322 2e-5,1e-5 3e-5,3e-5 5e-5,5e-5
3.21102,3.46934 4.63062,8.27318 5.04051,12.98264 0.41,4.71077 -0.0852,9.44723 -0.1789,14.17488
-0.10721,5.4079 0.30156,10.912 -1.06029,16.14671 -1.55704,5.98502 -5.48588,11.32637 -10.73556,14.59527
-3.77605,-0.86428 -7.77873,-0.72238 -11.48409,0.40712 -3.70537,1.1295 -7.10659,3.24452 -9.75844,6.0682
-4.15358,4.42272 -6.37982,10.5847 -6.11019,16.64605 0,2e-5 0,3e-5 0,4e-5 0.23758,5.34073 2.36859,10.56193
5.83809,14.62917 10e-6,10e-6 2e-5,2e-5 3e-5,3e-5 3.46975,4.06752 8.24802,6.97932 13.4221,8.32573
4.51162,1.17403 9.34056,1.17129 13.82052,-0.11828 4.47975,-1.2895 8.596
35,-3.87695 11.61522,-7.42904 3.02242,-3.55627 4.91711,-8.06019 5.34575,-12.70759 10e-6,-3e-5 10e-6,-5e-5
10e-6,-8e-5 0.42864,-4.64742 -0.61029,-9.42195 -2.93128,-13.47106 -1.10365,-2.89524 -1.08961,-6.20429
0.0386,-9.09005 0,-10e-6 1e-5,-3e-5 1e-5,-4e-5 1.1282,-2.88577 3.36222,-5.32694 6.1369,-6.70594
3.47162,-1.72538 7.76143,-1.72538 11.23305,0 3.47935,0.88812 6.65089,2.94914 8.87568,5.76782 2.22478,2.81869
3.49269,6.38223 3.5483,9.97271 0.0448,2.88989 -0.66677,5.7303 -1.2997,8.55039 -0.63291,2.82001
-1.19432,5.71596 -0.84587,8.58504 0,2e-5 0,3e-5 0,4e-5 0.43816,3.60767 2.33339,6.96423 4.97344,9.46172
2.64067,2.49807 5.99201,4.1741 9.49814,5.13355 10e-6,0 2e-5,1e-5 4e-5,1e-5 8.13425,2.22592 17.27288,0.51296
24.04882,-4.50774 2.95407,-2.80833 5.12951,-6.42944 6.22172,-10.35631 1.09222,-3.92687 1.09889,-8.15119
0.0191,-12.0815 -1.22234,-4.44914 -3.84239,-8.50594 -7.39496,-11.45011 -3.55256,-2.94417 -8.02526,-4.76546
-12.62397,-5.1405 -2e-5,0 -3e-5,0 -4e-5,0 -2.56836,0.72381
-5.27682,0.94784 -7.9292,0.65587 -10e-6,0 -2e-5,0 -4e-5,0 -3.77599,-0.41566 -7.46992,-1.91446
-10.28756,-4.46235 -10e-6,-1e-5 -2e-5,-1e-5 -2e-5,-2e-5 -2.8168,-2.54715 -4.70691,-6.17422 -4.91006,-9.96645
-0.14723,-2.74836 0.56276,-5.4692 1.41517,-8.08617 0.85243,-2.61706 1.85748,-5.20104 2.33283,-7.91207
0.92354,-5.26723 -0.28222,-10.88387 -3.28625,-15.30794 -3.00404,-4.42407 -7.77987,-7.61656 -13.01633,-8.70101
-3.38923,0.38773 -6.89239,-0.26847 -9.91151,-1.8566 -2e-5,-1e-5 -4e-5,-2e-5 -7e-5,-3e-5 -3.23617,-1.70233
-5.90142,-4.47336 -7.47657,-7.7733 -1.57515,-3.29994 -2.05353,-7.11482 -1.34194,-10.70152 0,-2e-5 1e-5,-5e-5
1e-5,-7e-5 0.98555,-6.30654 2.75458,-12.49035 5.25348,-18.36396 1e-5,-2e-5 2e-5,-5e-5 3e-5,-7e-5
2.90825,-6.83578 6.89834,-13.35821 12.56261,-18.16464 5.66117,-4.8038 13.16594,-7.75245 20.54108,-6.89651
4.32392,0.50183 8.42733,2.25397 12.75051,2.76214 4.7583,0.55932 9.69143,-0.45462 13.8434,-2.84533 2e-5,-2e-5
4e-5,-3e-5 6e-5,-4e-5 9.24006,1.13358 17.98407,
5.97778 23.8453,13.21033 5.15234,6.35781 7.99577,14.2147 11.30601,21.69872 1.92466,4.3514 4.05797,8.66096
7.03333,12.37393 10e-6,2e-5 3e-5,4e-5 5e-5,6e-5 2.97478,3.71223 6.87266,6.82357 11.43539,8.16948 2e-5,1e-5
5e-5,1e-5 7e-5,2e-5 4.08278,1.20432 8.59203,0.91743 12.48927,-0.79459 2.77058,2.06261 4.93246,4.93513
6.1476,8.16838 10e-6,2e-5 2e-5,4e-5 2e-5,6e-5 1.21514,3.23328 1.48028,6.81866 0.75396,10.19551
-0.64549,3.00105 -2.03848,5.78453 -2.94997,8.71576 -0.45574,1.4656 -0.79214,2.97858 -0.84237,4.51258
-0.0502,1.5339 0.19468,3.09454 0.85538,4.47976 1.12213,2.35266 3.31808,4.00019 4.78859,6.15235 10e-6,2e-5
3e-5,4e-5 4e-5,6e-5 1.28491,1.88055 1.99273,4.15109 2.00406,6.42866 0,2e-5 0,5e-5 0,7e-5 0.0113,2.27755
-0.67387,4.55499 -1.94,6.44821 -1.26613,1.89323 -3.10926,3.39632 -5.21849,4.25572 -2.10924,0.8594
-4.47799,1.07243 -6.70672,0.60317 -6.72013,2.08 -13.07673,5.33027 -18.69744,9.56041 -3.43389,2.58434
-6.63757,5.58482 -8.83155,9.28034 -2.19309,3.69404 -3.30672,8.16333 -
2.4015,12.36288 0.73825,3.42496 2.77646,6.49085 5.39143,8.82264 2.61545,2.33222 5.78751,3.97275
9.08008,5.17224 2e-5,1e-5 5e-5,2e-5 7e-5,3e-5 7.59964,2.76856 16.01971,3.25052 23.88562,1.3672 2e-5,-10e-6
4e-5,-3e-5 6e-5,-4e-5 5.55583,-4.2436 9.26683,-10.83973 10.0094,-17.79128 0.48273,-4.51901 -0.25456,-9.16391
-2.11291,-13.31132 -1.12772,-3.87126 -0.64207,-8.19191 1.31693,-11.71621 1.95901,-3.5243 5.37216,-6.21769
9.25535,-7.3036 3.03411,-0.84847 6.23896,-0.7413 9.38918,-0.78414 3.15001,-0.0428 6.40369,-0.26967
9.21028,-1.70056 1.87052,-0.95365 3.46254,-2.41445 4.68173,-4.12379 1.21923,-1.70942 2.07411,-3.66326
2.63108,-5.68772 0,-2e-5 10e-6,-4e-5 2e-5,-7e-5 1.11392,-4.04896 1.04531,-8.32057 0.84497,-12.51519 0,-2e-5
0,-5e-5 0,-7e-5 -0.20277,-4.24553 -0.53208,-8.48502 -0.98732,-12.71094 -1.04658,-3.18409 -3.10978,-6.02749
-5.8122,-8.01008 -2.70242,-1.9826 -6.03405,-3.09704 -9.38546,-3.13947 -1.77072,-0.0224 -3.53043,0.24491
-5.29437,0.40133 -1.76389,0.15642 -3.56824,0.19871
-5.27791,-0.26261 -1.52465,-0.4114 -2.93141,-1.21815 -4.11285,-2.26602 -2e-5,-2e-5 -3e-5,-3e-5 -5e-5,-5e-5
-1.1815,-1.04794 -2.14182,-2.33315 -2.88667,-3.72574 -1.48968,-2.78513 -2.11051,-5.95234 -2.4471,-9.09286
0,-2e-5 -10e-6,-5e-5 -10e-6,-7e-5 -0.7501,-6.99887 -0.1865,-14.13231 -1.52514,-21.0428 -0.72945,-3.76565
-2.0464,-7.46897 -4.28746,-10.58183 -2.2404,-3.11195 -5.46685,-5.60479 -9.18911,-6.5259 -3.02141,-0.74768
-6.20154,-0.44617 -9.27072,0.0716 -3.06933,0.51775 -6.11978,1.24879 -9.23079,1.35113 -2e-5,0 -5e-5,0 -7e-5,0
-3.90344,0.1284 -7.81108,-0.74979 -11.38322,-2.32877 -3.5723,-1.57904 -6.81761,-3.84706 -9.69109,-6.49241
-5.74696,-5.29072 -9.96674,-12.00296 -13.94631,-18.72474 -2.39922,-4.05246 -4.71299,-8.17874
-6.40846,-12.57238 -1.69522,-4.39298 -2.67881,-9.02583 -3.50306,-13.661852 l -1.9823,-11.149545"
+ id="path2938"
+ inkscape:path-effect="#path-effect2940;#path-effect2942"
+ inkscape:original-d="m 407.86585,83.916245 c 0,0 -14.11559,27.469705 -24.4484,38.695485
-9.34236,10.14972 -20.62893,24.18364 -33.66651,28.69118 -10.61846,3.67116 -11.93657,-7.91708 -19.88069,0.0278
-8.03966,8.04037 -7.9913,25.39502 -14.47923,34.7326 0,0 -7.13271,14.26573 -13.21535,19.01981 -8.72576,6.81989
-26.98503,4.24108 -24.14685,14.94595 2.83816,10.70488 4.57641,21.84782 15.56452,28.59021 9.79125,6.00799
28.36077,4.86263 29.30237,-6.5863 0.94161,-11.44892 3.2096,-17.00295 7.03985,-25.85581 3.83025,-8.85286
-1.10893,-26.61597 4.61772,-20.27603 0,0 11.6923,-3.64141 14.03941,4.57324 1.70869,5.98028 2.66345,21.33932
4.86161,27.15752 2.19816,5.81821 -0.52766,12.44562 -1.06029,16.14671 -1.09286,7.59409 -3.21008,13.10136
-10.73556,14.59527 0,0 -15.16484,1.49219 -21.24253,6.47532 -6.22299,5.10225 -7.51576,8.72253
-6.11019,16.64609 1.81705,10.24319 9.04679,20.97753 19.26022,22.95493 11.49367,2.22528 19.58074,2.59049
25.43574,-7.54732 4.1679,-7.21663 -1.97686,-19.09584 2.4
1448,-26.17873 0,0 0.33183,-12.5434 6.17549,-15.79603 3.2717,-1.82105 9.2379,-3.16852 11.23305,0 0,0
11.52539,9.6056 12.42398,15.74053 0.95363,6.51078 -5.98915,11.79446 -2.14557,17.13547 3.84359,5.34102
7.61186,11.46161 14.47158,14.59527 8.85083,4.04326 19.94604,4.31564 24.04886,-4.50773 0,0 8.1669,-13.23439
6.24082,-22.43781 -2.16604,-10.34997 -9.48077,-17.46228 -20.01897,-16.59061 0,0 -5.42758,1.53646
-7.9292,0.65587 -6.58909,-2.31941 -16.02955,-7.49314 -15.19768,-14.42882 0.83187,-6.93568 9.55833,8.44447
3.748,-15.99824 -1.55478,-6.54061 -9.59437,-24.45283 -16.30258,-24.00895 0,0 -6.96155,-0.35298
-9.91151,-1.8566 -7.36557,-3.75427 -10.83778,-10.45812 -8.81857,-18.47492 0,0 1.87298,-13.03292
5.25348,-18.36396 7.93496,-12.51342 19.58924,-22.07695 33.10372,-25.06122 4.24644,-0.93771 6.93062,3.3283
12.75051,2.76214 5.10303,-0.49642 9.84185,-6.05074 13.84346,-2.84537 0,0 16.88165,-1.28992 23.8453,13.21033
3.31247,6.89749 4.71066,17.81941 11.30601,21.69872 6.59535,3.87931 11.6
0217,19.87279 18.46884,20.54349 3.94867,0.38568 10.25015,-4.06981 12.48927,-0.79459 0,0 6.35327,10.96916
6.90158,18.36395 0.48511,6.54257 -6.59488,12.262 -2.93696,17.7081 3.65793,5.44611 4.68796,1.4131
4.78863,6.15241 0.15241,7.17408 -4.7607,16.6994 -11.86115,17.73583 0,0 -12.53135,5.17234 -18.69744,9.56041
-6.62245,4.71284 -15.87104,14.96813 -11.23305,21.64322 0,0 7.82042,10.07549 14.47158,13.99491 7.43886,4.38361
19.41887,8.75645 23.88562,1.3672 0,0 8.90884,-10.20704 10.00946,-17.79132 0.87615,-6.0375 -5.07693,-7.979
-2.11291,-13.31132 0,0 4.26218,-15.44258 10.57228,-19.01981 5.94288,-3.36906 15.32144,3.50888
18.59946,-2.4847 0,0 7.61918,-13.6222 8.1578,-22.32684 0.40659,-6.57079 4.32078,-8.81675 -0.98732,-12.71094
0,0 -9.00115,-10.11082 -15.19766,-11.14955 -3.63896,-0.61001 -8.14088,2.91403 -10.57228,0.13872 0,0
-8.10433,-8.53592 -9.44667,-15.08467 -1.56983,-7.65869 4.02354,-15.53542 -1.52515,-21.04287 -5.54869,-5.50744
-5.14034,-14.65591 -13.47657,-17.10773 -6.04893,-1.7
7908 -13.54572,5.32072 -18.50151,1.42268 -4.95579,-3.89803 -26.23756,-15.56939 -35.02069,-27.54592
-5.52823,-7.53822 -8.27517,-17.03053 -9.91152,-26.234232 l -1.9823,-11.149545"
+ sodipodi:nodetypes="cssssszszzsszsssssssssszssssszsssssassszssszssssssssssssssszszssc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,454.12853,95.367832)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-9"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,525.04284,40.275046)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-2"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,418.24759,148.76546)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-95"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,454.97612,201.88055)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-3"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,490.00948,149.33052)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-27"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,526.17295,202.4456)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-31"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,596.80473,93.955197)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-8"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,634.0983,148.2004)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-5"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,597.36978,202.44561)" />
+ </g>
+</svg>
diff --git a/docs/reference/glib/Sorted_binary_tree_postorder.svg
b/docs/reference/glib/Sorted_binary_tree_postorder.svg
new file mode 100644
index 0000000..1160e42
--- /dev/null
+++ b/docs/reference/glib/Sorted_binary_tree_postorder.svg
@@ -0,0 +1,750 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="265.90625"
+ height="226.94397"
+ id="svg3953"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="Sorted_binary_tree_postorder.svg">
+ <defs
+ id="defs3955">
+ <marker
+ inkscape:stockid="SquareL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="SquareL"
+ style="overflow:visible">
+ <path
+ id="path4940"
+ d="M -5,-5 -5,5 5,5 5,-5 -5,-5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="DistanceStart"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="DistanceStart">
+ <g
+ id="g2300">
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square"
+ d="M 0,0 2,0"
+ id="path2306"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#000000;fill-rule:evenodd;stroke:none"
+ d="M 0,0 13,4 9,0 13,-4 0,0 z"
+ id="path2302"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square"
+ d="M 0,-4 0,40"
+ id="path2304"
+ inkscape:connector-curvature="0" />
+ </g>
+ </marker>
+ <marker
+ inkscape:stockid="DotL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="DotL"
+ style="overflow:visible">
+ <path
+ id="path4931"
+ d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
+ transform="matrix(0.8,0,0,0.8,5.92,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path4890"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609
-1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible">
+ <path
+ id="path4869"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3961" />
+ <inkscape:perspective
+ id="perspective3971"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:path-effect
+ effect="spiro"
+ id="path-effect2940"
+ is_visible="true" />
+ <inkscape:path-effect
+ effect="skeletal"
+ id="path-effect2942"
+ is_visible="true"
+ pattern="m 187.18135,13.365063 1,0"
+ copytype="single_stretched"
+ prop_scale="1"
+ scale_y_rel="false"
+ spacing="0"
+ normal_offset="0"
+ tang_offset="0"
+ prop_units="false"
+ vertical_pattern="false"
+ fuse_tolerance="0" />
+ <inkscape:perspective
+ id="perspective4212"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-7"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-5"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-76"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-2"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-22"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-8"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4852"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective5886"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-7"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-4"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-1"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-3"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-11"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-74"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-79"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-9"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-6"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.4"
+ inkscape:cx="-131.03835"
+ inkscape:cy="76.407899"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1366"
+ inkscape:window-height="702"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+ <metadata
+ id="metadata3958">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-275.65625,-78.774784)">
+ <g
+ transform="matrix(0.9925764,0,0,0.9925764,278.52645,98.594058)"
+ id="graph0"
+ class="graph"
+ style="font-size:14px;font-family:Times-Roman">
+ <title
+ id="title5">sorted_binary_tree</title>
+ <g
+ id="node1"
+ class="node">
+ <title
+ id="title8">C</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="18"
+ sodipodi:cy="185"
+ sodipodi:cx="60"
+ d="m 78,185 c 0,9.94113 -8.058875,18 -18,18 -9.941125,0 -18,-8.05887 -18,-18 0,-9.94113
8.058875,-18 18,-18 9.941125,0 18,8.05887 18,18 z"
+ cx="60"
+ cy="185"
+ rx="18"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse10" />
+ <text
+ style="text-anchor:middle"
+ x="60"
+ y="190"
+ id="text12">C</text>
+ </g>
+ <g
+ id="node2"
+ class="node">
+ <title
+ id="title15">E</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="18"
+ sodipodi:cy="185"
+ sodipodi:cx="132"
+ d="m 150,185 c 0,9.94113 -8.05887,18 -18,18 -9.94113,0 -18,-8.05887 -18,-18 0,-9.94113
8.05887,-18 18,-18 9.94113,0 18,8.05887 18,18 z"
+ cx="132"
+ cy="185"
+ rx="18"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse17" />
+ <text
+ style="text-anchor:middle"
+ x="132"
+ y="190"
+ id="text19">E</text>
+ </g>
+ <g
+ id="node3"
+ class="node">
+ <title
+ id="title22">H</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="17"
+ sodipodi:cy="185"
+ sodipodi:cx="204"
+ d="m 221,185 c 0,9.94113 -7.61116,18 -17,18 -9.38884,0 -17,-8.05887 -17,-18 0,-9.94113
7.61116,-18 17,-18 9.38884,0 17,8.05887 17,18 z"
+ cx="204"
+ cy="185"
+ rx="17"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse24" />
+ <text
+ style="text-anchor:middle"
+ x="204"
+ y="190"
+ id="text26">H</text>
+ </g>
+ <g
+ id="node4"
+ class="node">
+ <title
+ id="title29">A</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="17"
+ sodipodi:cy="131"
+ sodipodi:cx="24"
+ d="m 41,131 c 0,9.94113 -7.611159,18 -17,18 -9.388841,0 -17,-8.05887 -17,-18 0,-9.94113
7.611159,-18 17,-18 9.388841,0 17,8.05887 17,18 z"
+ cx="24"
+ cy="131"
+ rx="17"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse31" />
+ <text
+ style="text-anchor:middle"
+ x="24"
+ y="136"
+ id="text33">A</text>
+ </g>
+ <g
+ id="node5"
+ class="node">
+ <title
+ id="title36">D</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="17"
+ sodipodi:cy="131"
+ sodipodi:cx="96"
+ d="m 113,131 c 0,9.94113 -7.61116,18 -17,18 -9.388841,0 -17,-8.05887 -17,-18 0,-9.94113
7.611159,-18 17,-18 9.38884,0 17,8.05887 17,18 z"
+ cx="96"
+ cy="131"
+ rx="17"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse38" />
+ <text
+ style="text-anchor:middle"
+ x="96"
+ y="136"
+ id="text40">D</text>
+ </g>
+ <g
+ id="edge6"
+ class="edge">
+ <title
+ id="title43">D->C</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 86,147 c -3,4 -7,9 -10,14"
+ id="path45"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="78,164 70,170 73,160 78,164 "
+ id="polygon47" />
+ </g>
+ <g
+ id="edge8"
+ class="edge">
+ <title
+ id="title50">D->E</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 106,147 c 3,4 7,9 10,14"
+ id="path52"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="119,160 122,170 114,164 119,160 "
+ id="polygon54" />
+ </g>
+ <g
+ id="node6"
+ class="node">
+ <title
+ id="title57">I</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="18"
+ sodipodi:cy="131"
+ sodipodi:cx="240"
+ d="m 258,131 c 0,9.94113 -8.05887,18 -18,18 -9.94113,0 -18,-8.05887 -18,-18 0,-9.94113
8.05887,-18 18,-18 9.94113,0 18,8.05887 18,18 z"
+ cx="240"
+ cy="131"
+ rx="18"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse59" />
+ <text
+ style="text-anchor:middle"
+ x="240"
+ y="136"
+ id="text61">I</text>
+ </g>
+ <g
+ id="edge12"
+ class="edge">
+ <title
+ id="title64">I->H</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 230,146 c -3,5 -6,10 -10,15"
+ id="path66"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="223,163 214,169 217,159 223,163 "
+ id="polygon68" />
+ </g>
+ <g
+ id="node7"
+ class="node">
+ <title
+ id="title71">B</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="18"
+ sodipodi:cy="77"
+ sodipodi:cx="60"
+ d="m 78,77 c 0,9.941125 -8.058875,18 -18,18 -9.941125,0 -18,-8.058875 -18,-18 0,-9.941125
8.058875,-18 18,-18 9.941125,0 18,8.058875 18,18 z"
+ cx="60"
+ cy="77"
+ rx="18"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse73" />
+ <text
+ style="text-anchor:middle"
+ x="60"
+ y="82"
+ id="text75">B</text>
+ </g>
+ <g
+ id="edge3"
+ class="edge">
+ <title
+ id="title78">B->A</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 50,92 c -3,5 -6,10 -10,15"
+ id="path80"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="43,109 34,115 37,105 43,109 "
+ id="polygon82" />
+ </g>
+ <g
+ id="edge5"
+ class="edge">
+ <title
+ id="title85">B->D</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 70,92 c 3,5 6,10 10,15"
+ id="path87"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="83,105 86,115 77,109 83,105 "
+ id="polygon89" />
+ </g>
+ <g
+ id="node8"
+ class="node">
+ <title
+ id="title92">G</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="17"
+ sodipodi:cy="77"
+ sodipodi:cx="204"
+ d="m 221,77 c 0,9.941125 -7.61116,18 -17,18 -9.38884,0 -17,-8.058875 -17,-18 0,-9.941125
7.61116,-18 17,-18 9.38884,0 17,8.058875 17,18 z"
+ cx="204"
+ cy="77"
+ rx="17"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse94" />
+ <text
+ style="text-anchor:middle"
+ x="204"
+ y="82"
+ id="text96">G</text>
+ </g>
+ <g
+ id="edge11"
+ class="edge">
+ <title
+ id="title99">G->I</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 214,93 c 3,4 7,9 10,14"
+ id="path101"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="227,106 230,116 222,110 227,106 "
+ id="polygon103" />
+ </g>
+ <g
+ id="node9"
+ class="node">
+ <title
+ id="title106">F</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="18"
+ sodipodi:cy="23"
+ sodipodi:cx="132"
+ d="m 150,23 c 0,9.941125 -8.05887,18 -18,18 -9.94113,0 -18,-8.058875 -18,-18 0,-9.941125
8.05887,-18 18,-18 9.94113,0 18,8.058875 18,18 z"
+ cx="132"
+ cy="23"
+ rx="18"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse108" />
+ <text
+ style="text-anchor:middle"
+ x="132"
+ y="28"
+ id="text110">F</text>
+ </g>
+ <g
+ id="edge2"
+ class="edge">
+ <title
+ id="title113">F->B</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="M 117,34 C 106,42 94,51 83,60"
+ id="path115"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="85,63 75,66 81,57 85,63 "
+ id="polygon117" />
+ </g>
+ <g
+ id="edge10"
+ class="edge">
+ <title
+ id="title120">F->G</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 147,34 c 11,8 23,17 34,26"
+ id="path122"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="183,57 189,66 179,63 183,57 "
+ id="polygon124" />
+ </g>
+ </g>
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.82904756;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3.31619022,
3.31619022;stroke-dashoffset:0;marker-start:url(#SquareL);marker-end:url(#Arrow2Lend)"
+ d="m 407.86585,83.916245 c -8.09235,12.934463 -16.24193,25.833125 -24.4484,38.695485 -4.10893,6.44009
-8.28,12.93078 -13.72464,18.28932 -5.44312,5.35704 -12.35084,9.56414 -19.94187,10.40186 -3.3055,0.36478
-6.64352,0.0886 -9.9615,-0.13591 -1e-5,0 -3e-5,0 -4e-5,0 -3.30753,-0.22377 -6.65223,-0.39935 -9.91915,0.16371
-3.67892,0.63407 -7.19225,2.2113 -10.11083,4.53904 -10e-6,1e-5 -2e-5,2e-5 -3e-5,2e-5 -2.91857,2.32774
-5.23772,5.40225 -6.67417,8.84797 -1.43645,3.44574 -1.98788,7.25719 -1.58695,10.96875 0.40093,3.71157
1.75359,7.31733 3.89275,10.37682 -1.57329,7.77579 -6.47676,14.83297 -13.21535,19.01981 -4.08578,2.53859
-8.72148,4.0255 -13.0897,6.03963 -2e-5,0 -3e-5,1e-5 -4e-5,2e-5 -4.36719,2.01365 -8.65699,4.73894
-11.05709,8.90627 -10e-6,1e-5 -10e-6,2e-5 -2e-5,3e-5 -1.54971,2.69079 -2.21037,5.86275 -2.00701,8.96123
0.20338,3.09874 1.25331,6.121 2.89275,8.75838 3.2781,5.27351 8.79594,8.88365 14.67878,10.8706 10e-6,0
2e-5,1e-5 4e-5,1e-5 5.05172,1.70623 10.53116,2.32159 15
.76564,1.30607 1e-5,-1e-5 2e-5,-1e-5 3e-5,-1e-5 5.23327,-1.0153 10.20383,-3.73183 13.53666,-7.89237
2.8325,-3.53596 4.39168,-7.94004 5.28933,-12.38079 0,-1e-5 10e-6,-3e-5 10e-6,-4e-5 0.89772,-4.44111
1.18109,-8.97997 1.75051,-13.47498 0.87253,-6.88777 2.42162,-13.6897 4.61772,-20.27603 2.52197,-0.49612
5.17081,-0.33611 7.61472,0.45997 2.44389,0.79608 4.67875,2.2269 6.42464,4.11322 2e-5,1e-5 3e-5,3e-5 5e-5,5e-5
3.21102,3.46934 4.63062,8.27318 5.04051,12.98264 0.41,4.71077 -0.0852,9.44723 -0.1789,14.17488
-0.10721,5.4079 0.30156,10.912 -1.06029,16.14671 -1.55704,5.98502 -5.48588,11.32637 -10.73556,14.59527
-3.77605,-0.86428 -7.77873,-0.72238 -11.48409,0.40712 -3.70537,1.1295 -7.10659,3.24452 -9.75844,6.0682
-4.15358,4.42272 -6.37982,10.5847 -6.11019,16.64605 0,2e-5 0,3e-5 0,4e-5 0.23758,5.34073 2.36859,10.56193
5.83809,14.62917 10e-6,10e-6 2e-5,2e-5 3e-5,3e-5 3.46975,4.06752 8.24802,6.97932 13.4221,8.32573
4.51162,1.17403 9.34056,1.17129 13.82052,-0.11828 4.47975,-1.2895 8.596
35,-3.87695 11.61522,-7.42904 3.02242,-3.55627 4.91711,-8.06019 5.34575,-12.70759 10e-6,-3e-5 10e-6,-5e-5
10e-6,-8e-5 0.42864,-4.64742 -0.61029,-9.42195 -2.93128,-13.47106 -1.10365,-2.89524 -1.08961,-6.20429
0.0386,-9.09005 0,-10e-6 1e-5,-3e-5 1e-5,-4e-5 1.1282,-2.88577 3.36222,-5.32694 6.1369,-6.70594
3.47162,-1.72538 7.76143,-1.72538 11.23305,0 3.47935,0.88812 6.65089,2.94914 8.87568,5.76782 2.22478,2.81869
3.49269,6.38223 3.5483,9.97271 0.0448,2.88989 -0.66677,5.7303 -1.2997,8.55039 -0.63291,2.82001
-1.19432,5.71596 -0.84587,8.58504 0,2e-5 0,3e-5 0,4e-5 0.43816,3.60767 2.33339,6.96423 4.97344,9.46172
2.64067,2.49807 5.99201,4.1741 9.49814,5.13355 10e-6,0 2e-5,1e-5 4e-5,1e-5 8.13425,2.22592 17.27288,0.51296
24.04882,-4.50774 2.95407,-2.80833 5.12951,-6.42944 6.22172,-10.35631 1.09222,-3.92687 1.09889,-8.15119
0.0191,-12.0815 -1.22234,-4.44914 -3.84239,-8.50594 -7.39496,-11.45011 -3.55256,-2.94417 -8.02526,-4.76546
-12.62397,-5.1405 -2e-5,0 -3e-5,0 -4e-5,0 -2.56836,0.72381
-5.27682,0.94784 -7.9292,0.65587 -10e-6,0 -2e-5,0 -4e-5,0 -3.77599,-0.41566 -7.46992,-1.91446
-10.28756,-4.46235 -10e-6,-1e-5 -2e-5,-1e-5 -2e-5,-2e-5 -2.8168,-2.54715 -4.70691,-6.17422 -4.91006,-9.96645
-0.14723,-2.74836 0.56276,-5.4692 1.41517,-8.08617 0.85243,-2.61706 1.85748,-5.20104 2.33283,-7.91207
0.92354,-5.26723 -0.28222,-10.88387 -3.28625,-15.30794 -3.00404,-4.42407 -7.77987,-7.61656 -13.01633,-8.70101
-3.38923,0.38773 -6.89239,-0.26847 -9.91151,-1.8566 -2e-5,-1e-5 -4e-5,-2e-5 -7e-5,-3e-5 -3.23617,-1.70233
-5.90142,-4.47336 -7.47657,-7.7733 -1.57515,-3.29994 -2.05353,-7.11482 -1.34194,-10.70152 0,-2e-5 1e-5,-5e-5
1e-5,-7e-5 0.98555,-6.30654 2.75458,-12.49035 5.25348,-18.36396 1e-5,-2e-5 2e-5,-5e-5 3e-5,-7e-5
2.90825,-6.83578 6.89834,-13.35821 12.56261,-18.16464 5.66117,-4.8038 13.16594,-7.75245 20.54108,-6.89651
4.32392,0.50183 8.42733,2.25397 12.75051,2.76214 4.7583,0.55932 9.69143,-0.45462 13.8434,-2.84533 2e-5,-2e-5
4e-5,-3e-5 6e-5,-4e-5 9.24006,1.13358 17.98407,
5.97778 23.8453,13.21033 5.15234,6.35781 7.99577,14.2147 11.30601,21.69872 1.92466,4.3514 4.05797,8.66096
7.03333,12.37393 10e-6,2e-5 3e-5,4e-5 5e-5,6e-5 2.97478,3.71223 6.87266,6.82357 11.43539,8.16948 2e-5,1e-5
5e-5,1e-5 7e-5,2e-5 4.08278,1.20432 8.59203,0.91743 12.48927,-0.79459 2.77058,2.06261 4.93246,4.93513
6.1476,8.16838 10e-6,2e-5 2e-5,4e-5 2e-5,6e-5 1.21514,3.23328 1.48028,6.81866 0.75396,10.19551
-0.64549,3.00105 -2.03848,5.78453 -2.94997,8.71576 -0.45574,1.4656 -0.79214,2.97858 -0.84237,4.51258
-0.0502,1.5339 0.19468,3.09454 0.85538,4.47976 1.12213,2.35266 3.31808,4.00019 4.78859,6.15235 10e-6,2e-5
3e-5,4e-5 4e-5,6e-5 1.28491,1.88055 1.99273,4.15109 2.00406,6.42866 0,2e-5 0,5e-5 0,7e-5 0.0113,2.27755
-0.67387,4.55499 -1.94,6.44821 -1.26613,1.89323 -3.10926,3.39632 -5.21849,4.25572 -2.10924,0.8594
-4.47799,1.07243 -6.70672,0.60317 -6.72013,2.08 -13.07673,5.33027 -18.69744,9.56041 -3.43389,2.58434
-6.63757,5.58482 -8.83155,9.28034 -2.19309,3.69404 -3.30672,8.16333 -
2.4015,12.36288 0.73825,3.42496 2.77646,6.49085 5.39143,8.82264 2.61545,2.33222 5.78751,3.97275
9.08008,5.17224 2e-5,1e-5 5e-5,2e-5 7e-5,3e-5 7.59964,2.76856 16.01971,3.25052 23.88562,1.3672 2e-5,-10e-6
4e-5,-3e-5 6e-5,-4e-5 5.55583,-4.2436 9.26683,-10.83973 10.0094,-17.79128 0.48273,-4.51901 -0.25456,-9.16391
-2.11291,-13.31132 -1.12772,-3.87126 -0.64207,-8.19191 1.31693,-11.71621 1.95901,-3.5243 5.37216,-6.21769
9.25535,-7.3036 3.03411,-0.84847 6.23896,-0.7413 9.38918,-0.78414 3.15001,-0.0428 6.40369,-0.26967
9.21028,-1.70056 1.87052,-0.95365 3.46254,-2.41445 4.68173,-4.12379 1.21923,-1.70942 2.07411,-3.66326
2.63108,-5.68772 0,-2e-5 10e-6,-4e-5 2e-5,-7e-5 1.11392,-4.04896 1.04531,-8.32057 0.84497,-12.51519 0,-2e-5
0,-5e-5 0,-7e-5 -0.20277,-4.24553 -0.53208,-8.48502 -0.98732,-12.71094 -1.04658,-3.18409 -3.10978,-6.02749
-5.8122,-8.01008 -2.70242,-1.9826 -6.03405,-3.09704 -9.38546,-3.13947 -1.77072,-0.0224 -3.53043,0.24491
-5.29437,0.40133 -1.76389,0.15642 -3.56824,0.19871
-5.27791,-0.26261 -1.52465,-0.4114 -2.93141,-1.21815 -4.11285,-2.26602 -2e-5,-2e-5 -3e-5,-3e-5 -5e-5,-5e-5
-1.1815,-1.04794 -2.14182,-2.33315 -2.88667,-3.72574 -1.48968,-2.78513 -2.11051,-5.95234 -2.4471,-9.09286
0,-2e-5 -10e-6,-5e-5 -10e-6,-7e-5 -0.7501,-6.99887 -0.1865,-14.13231 -1.52514,-21.0428 -0.72945,-3.76565
-2.0464,-7.46897 -4.28746,-10.58183 -2.2404,-3.11195 -5.46685,-5.60479 -9.18911,-6.5259 -3.02141,-0.74768
-6.20154,-0.44617 -9.27072,0.0716 -3.06933,0.51775 -6.11978,1.24879 -9.23079,1.35113 -2e-5,0 -5e-5,0 -7e-5,0
-3.90344,0.1284 -7.81108,-0.74979 -11.38322,-2.32877 -3.5723,-1.57904 -6.81761,-3.84706 -9.69109,-6.49241
-5.74696,-5.29072 -9.96674,-12.00296 -13.94631,-18.72474 -2.39922,-4.05246 -4.71299,-8.17874
-6.40846,-12.57238 -1.69522,-4.39298 -2.67881,-9.02583 -3.50306,-13.661852 l -1.9823,-11.149545"
+ id="path2938"
+ inkscape:path-effect="#path-effect2940;#path-effect2942"
+ inkscape:original-d="m 407.86585,83.916245 c 0,0 -14.11559,27.469705 -24.4484,38.695485
-9.34236,10.14972 -20.62893,24.18364 -33.66651,28.69118 -10.61846,3.67116 -11.93657,-7.91708 -19.88069,0.0278
-8.03966,8.04037 -7.9913,25.39502 -14.47923,34.7326 0,0 -7.13271,14.26573 -13.21535,19.01981 -8.72576,6.81989
-26.98503,4.24108 -24.14685,14.94595 2.83816,10.70488 4.57641,21.84782 15.56452,28.59021 9.79125,6.00799
28.36077,4.86263 29.30237,-6.5863 0.94161,-11.44892 3.2096,-17.00295 7.03985,-25.85581 3.83025,-8.85286
-1.10893,-26.61597 4.61772,-20.27603 0,0 11.6923,-3.64141 14.03941,4.57324 1.70869,5.98028 2.66345,21.33932
4.86161,27.15752 2.19816,5.81821 -0.52766,12.44562 -1.06029,16.14671 -1.09286,7.59409 -3.21008,13.10136
-10.73556,14.59527 0,0 -15.16484,1.49219 -21.24253,6.47532 -6.22299,5.10225 -7.51576,8.72253
-6.11019,16.64609 1.81705,10.24319 9.04679,20.97753 19.26022,22.95493 11.49367,2.22528 19.58074,2.59049
25.43574,-7.54732 4.1679,-7.21663 -1.97686,-19.09584 2.4
1448,-26.17873 0,0 0.33183,-12.5434 6.17549,-15.79603 3.2717,-1.82105 9.2379,-3.16852 11.23305,0 0,0
11.52539,9.6056 12.42398,15.74053 0.95363,6.51078 -5.98915,11.79446 -2.14557,17.13547 3.84359,5.34102
7.61186,11.46161 14.47158,14.59527 8.85083,4.04326 19.94604,4.31564 24.04886,-4.50773 0,0 8.1669,-13.23439
6.24082,-22.43781 -2.16604,-10.34997 -9.48077,-17.46228 -20.01897,-16.59061 0,0 -5.42758,1.53646
-7.9292,0.65587 -6.58909,-2.31941 -16.02955,-7.49314 -15.19768,-14.42882 0.83187,-6.93568 9.55833,8.44447
3.748,-15.99824 -1.55478,-6.54061 -9.59437,-24.45283 -16.30258,-24.00895 0,0 -6.96155,-0.35298
-9.91151,-1.8566 -7.36557,-3.75427 -10.83778,-10.45812 -8.81857,-18.47492 0,0 1.87298,-13.03292
5.25348,-18.36396 7.93496,-12.51342 19.58924,-22.07695 33.10372,-25.06122 4.24644,-0.93771 6.93062,3.3283
12.75051,2.76214 5.10303,-0.49642 9.84185,-6.05074 13.84346,-2.84537 0,0 16.88165,-1.28992 23.8453,13.21033
3.31247,6.89749 4.71066,17.81941 11.30601,21.69872 6.59535,3.87931 11.6
0217,19.87279 18.46884,20.54349 3.94867,0.38568 10.25015,-4.06981 12.48927,-0.79459 0,0 6.35327,10.96916
6.90158,18.36395 0.48511,6.54257 -6.59488,12.262 -2.93696,17.7081 3.65793,5.44611 4.68796,1.4131
4.78863,6.15241 0.15241,7.17408 -4.7607,16.6994 -11.86115,17.73583 0,0 -12.53135,5.17234 -18.69744,9.56041
-6.62245,4.71284 -15.87104,14.96813 -11.23305,21.64322 0,0 7.82042,10.07549 14.47158,13.99491 7.43886,4.38361
19.41887,8.75645 23.88562,1.3672 0,0 8.90884,-10.20704 10.00946,-17.79132 0.87615,-6.0375 -5.07693,-7.979
-2.11291,-13.31132 0,0 4.26218,-15.44258 10.57228,-19.01981 5.94288,-3.36906 15.32144,3.50888
18.59946,-2.4847 0,0 7.61918,-13.6222 8.1578,-22.32684 0.40659,-6.57079 4.32078,-8.81675 -0.98732,-12.71094
0,0 -9.00115,-10.11082 -15.19766,-11.14955 -3.63896,-0.61001 -8.14088,2.91403 -10.57228,0.13872 0,0
-8.10433,-8.53592 -9.44667,-15.08467 -1.56983,-7.65869 4.02354,-15.53542 -1.52515,-21.04287 -5.54869,-5.50744
-5.14034,-14.65591 -13.47657,-17.10773 -6.04893,-1.7
7908 -13.54572,5.32072 -18.50151,1.42268 -4.95579,-3.89803 -26.23756,-15.56939 -35.02069,-27.54592
-5.52823,-7.53822 -8.27517,-17.03053 -9.91152,-26.234232 l -1.9823,-11.149545"
+ sodipodi:nodetypes="cssssszszzsszsssssssssszssssszsssssassszssszssssssssssssssszszssc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,471.08015,79.546314)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-9"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,543.12457,23.323419)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-2"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,434.63417,132.94394)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-95"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,471.36269,185.49397)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-3"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,505.831,131.81383)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-27"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,542.55952,186.62408)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-31"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,614.32141,78.133679)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-8"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,649.91982,131.24877)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-5"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,613.1913,185.49398)" />
+ </g>
+</svg>
diff --git a/docs/reference/glib/Sorted_binary_tree_preorder.svg
b/docs/reference/glib/Sorted_binary_tree_preorder.svg
new file mode 100644
index 0000000..ae3d22c
--- /dev/null
+++ b/docs/reference/glib/Sorted_binary_tree_preorder.svg
@@ -0,0 +1,750 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="265.90625"
+ height="226.94397"
+ id="svg3953"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="Sorted_binary_tree_preorder.svg">
+ <defs
+ id="defs3955">
+ <marker
+ inkscape:stockid="SquareL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="SquareL"
+ style="overflow:visible">
+ <path
+ id="path4940"
+ d="M -5,-5 -5,5 5,5 5,-5 -5,-5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.8,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="DistanceStart"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="DistanceStart">
+ <g
+ id="g2300">
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square"
+ d="M 0,0 2,0"
+ id="path2306"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#000000;fill-rule:evenodd;stroke:none"
+ d="M 0,0 13,4 9,0 13,-4 0,0 z"
+ id="path2302"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square"
+ d="M 0,-4 0,40"
+ id="path2304"
+ inkscape:connector-curvature="0" />
+ </g>
+ </marker>
+ <marker
+ inkscape:stockid="DotL"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="DotL"
+ style="overflow:visible">
+ <path
+ id="path4931"
+ d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
+ transform="matrix(0.8,0,0,0.8,5.92,0.8)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path4890"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609
-1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible">
+ <path
+ id="path4869"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective3961" />
+ <inkscape:perspective
+ id="perspective3971"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:path-effect
+ effect="spiro"
+ id="path-effect2940"
+ is_visible="true" />
+ <inkscape:path-effect
+ effect="skeletal"
+ id="path-effect2942"
+ is_visible="true"
+ pattern="m 187.18135,13.365063 1,0"
+ copytype="single_stretched"
+ prop_scale="1"
+ scale_y_rel="false"
+ spacing="0"
+ normal_offset="0"
+ tang_offset="0"
+ prop_units="false"
+ vertical_pattern="false"
+ fuse_tolerance="0" />
+ <inkscape:perspective
+ id="perspective4212"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-7"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-5"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-76"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-2"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-22"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4744-8"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4852"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective5886"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-7"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-4"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-1"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-3"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-11"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-74"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-79"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-9"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective6303-6"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.98775168"
+ inkscape:cx="303.24736"
+ inkscape:cy="-18.949243"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1366"
+ inkscape:window-height="702"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+ <metadata
+ id="metadata3958">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-275.65625,-78.774784)">
+ <g
+ transform="matrix(0.9925764,0,0,0.9925764,278.52645,98.594058)"
+ id="graph0"
+ class="graph"
+ style="font-size:14px;font-family:Times-Roman">
+ <title
+ id="title5">sorted_binary_tree</title>
+ <g
+ id="node1"
+ class="node">
+ <title
+ id="title8">C</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="18"
+ sodipodi:cy="185"
+ sodipodi:cx="60"
+ d="m 78,185 c 0,9.94113 -8.058875,18 -18,18 -9.941125,0 -18,-8.05887 -18,-18 0,-9.94113
8.058875,-18 18,-18 9.941125,0 18,8.05887 18,18 z"
+ cx="60"
+ cy="185"
+ rx="18"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse10" />
+ <text
+ style="text-anchor:middle"
+ x="60"
+ y="190"
+ id="text12">C</text>
+ </g>
+ <g
+ id="node2"
+ class="node">
+ <title
+ id="title15">E</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="18"
+ sodipodi:cy="185"
+ sodipodi:cx="132"
+ d="m 150,185 c 0,9.94113 -8.05887,18 -18,18 -9.94113,0 -18,-8.05887 -18,-18 0,-9.94113
8.05887,-18 18,-18 9.94113,0 18,8.05887 18,18 z"
+ cx="132"
+ cy="185"
+ rx="18"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse17" />
+ <text
+ style="text-anchor:middle"
+ x="132"
+ y="190"
+ id="text19">E</text>
+ </g>
+ <g
+ id="node3"
+ class="node">
+ <title
+ id="title22">H</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="17"
+ sodipodi:cy="185"
+ sodipodi:cx="204"
+ d="m 221,185 c 0,9.94113 -7.61116,18 -17,18 -9.38884,0 -17,-8.05887 -17,-18 0,-9.94113
7.61116,-18 17,-18 9.38884,0 17,8.05887 17,18 z"
+ cx="204"
+ cy="185"
+ rx="17"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse24" />
+ <text
+ style="text-anchor:middle"
+ x="204"
+ y="190"
+ id="text26">H</text>
+ </g>
+ <g
+ id="node4"
+ class="node">
+ <title
+ id="title29">A</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="17"
+ sodipodi:cy="131"
+ sodipodi:cx="24"
+ d="m 41,131 c 0,9.94113 -7.611159,18 -17,18 -9.388841,0 -17,-8.05887 -17,-18 0,-9.94113
7.611159,-18 17,-18 9.388841,0 17,8.05887 17,18 z"
+ cx="24"
+ cy="131"
+ rx="17"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse31" />
+ <text
+ style="text-anchor:middle"
+ x="24"
+ y="136"
+ id="text33">A</text>
+ </g>
+ <g
+ id="node5"
+ class="node">
+ <title
+ id="title36">D</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="17"
+ sodipodi:cy="131"
+ sodipodi:cx="96"
+ d="m 113,131 c 0,9.94113 -7.61116,18 -17,18 -9.388841,0 -17,-8.05887 -17,-18 0,-9.94113
7.611159,-18 17,-18 9.38884,0 17,8.05887 17,18 z"
+ cx="96"
+ cy="131"
+ rx="17"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse38" />
+ <text
+ style="text-anchor:middle"
+ x="96"
+ y="136"
+ id="text40">D</text>
+ </g>
+ <g
+ id="edge6"
+ class="edge">
+ <title
+ id="title43">D->C</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 86,147 c -3,4 -7,9 -10,14"
+ id="path45"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="78,164 70,170 73,160 78,164 "
+ id="polygon47" />
+ </g>
+ <g
+ id="edge8"
+ class="edge">
+ <title
+ id="title50">D->E</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 106,147 c 3,4 7,9 10,14"
+ id="path52"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="119,160 122,170 114,164 119,160 "
+ id="polygon54" />
+ </g>
+ <g
+ id="node6"
+ class="node">
+ <title
+ id="title57">I</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="18"
+ sodipodi:cy="131"
+ sodipodi:cx="240"
+ d="m 258,131 c 0,9.94113 -8.05887,18 -18,18 -9.94113,0 -18,-8.05887 -18,-18 0,-9.94113
8.05887,-18 18,-18 9.94113,0 18,8.05887 18,18 z"
+ cx="240"
+ cy="131"
+ rx="18"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse59" />
+ <text
+ style="text-anchor:middle"
+ x="240"
+ y="136"
+ id="text61">I</text>
+ </g>
+ <g
+ id="edge12"
+ class="edge">
+ <title
+ id="title64">I->H</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 230,146 c -3,5 -6,10 -10,15"
+ id="path66"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="223,163 214,169 217,159 223,163 "
+ id="polygon68" />
+ </g>
+ <g
+ id="node7"
+ class="node">
+ <title
+ id="title71">B</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="18"
+ sodipodi:cy="77"
+ sodipodi:cx="60"
+ d="m 78,77 c 0,9.941125 -8.058875,18 -18,18 -9.941125,0 -18,-8.058875 -18,-18 0,-9.941125
8.058875,-18 18,-18 9.941125,0 18,8.058875 18,18 z"
+ cx="60"
+ cy="77"
+ rx="18"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse73" />
+ <text
+ style="text-anchor:middle"
+ x="60"
+ y="82"
+ id="text75">B</text>
+ </g>
+ <g
+ id="edge3"
+ class="edge">
+ <title
+ id="title78">B->A</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 50,92 c -3,5 -6,10 -10,15"
+ id="path80"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="43,109 34,115 37,105 43,109 "
+ id="polygon82" />
+ </g>
+ <g
+ id="edge5"
+ class="edge">
+ <title
+ id="title85">B->D</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 70,92 c 3,5 6,10 10,15"
+ id="path87"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="83,105 86,115 77,109 83,105 "
+ id="polygon89" />
+ </g>
+ <g
+ id="node8"
+ class="node">
+ <title
+ id="title92">G</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="17"
+ sodipodi:cy="77"
+ sodipodi:cx="204"
+ d="m 221,77 c 0,9.941125 -7.61116,18 -17,18 -9.38884,0 -17,-8.058875 -17,-18 0,-9.941125
7.61116,-18 17,-18 9.38884,0 17,8.058875 17,18 z"
+ cx="204"
+ cy="77"
+ rx="17"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse94" />
+ <text
+ style="text-anchor:middle"
+ x="204"
+ y="82"
+ id="text96">G</text>
+ </g>
+ <g
+ id="edge11"
+ class="edge">
+ <title
+ id="title99">G->I</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 214,93 c 3,4 7,9 10,14"
+ id="path101"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="227,106 230,116 222,110 227,106 "
+ id="polygon103" />
+ </g>
+ <g
+ id="node9"
+ class="node">
+ <title
+ id="title106">F</title>
+ <ellipse
+ sodipodi:ry="18"
+ sodipodi:rx="18"
+ sodipodi:cy="23"
+ sodipodi:cx="132"
+ d="m 150,23 c 0,9.941125 -8.05887,18 -18,18 -9.94113,0 -18,-8.058875 -18,-18 0,-9.941125
8.05887,-18 18,-18 9.94113,0 18,8.058875 18,18 z"
+ cx="132"
+ cy="23"
+ rx="18"
+ ry="18"
+ style="fill:#ffffff;stroke:#000000"
+ id="ellipse108" />
+ <text
+ style="text-anchor:middle"
+ x="132"
+ y="28"
+ id="text110">F</text>
+ </g>
+ <g
+ id="edge2"
+ class="edge">
+ <title
+ id="title113">F->B</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="M 117,34 C 106,42 94,51 83,60"
+ id="path115"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="85,63 75,66 81,57 85,63 "
+ id="polygon117" />
+ </g>
+ <g
+ id="edge10"
+ class="edge">
+ <title
+ id="title120">F->G</title>
+ <path
+ style="fill:none;stroke:#000000"
+ d="m 147,34 c 11,8 23,17 34,26"
+ id="path122"
+ inkscape:connector-curvature="0" />
+ <polygon
+ style="fill:#000000;stroke:#000000"
+ points="183,57 189,66 179,63 183,57 "
+ id="polygon124" />
+ </g>
+ </g>
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.82904756;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3.31619022,
3.31619022;stroke-dashoffset:0;marker-start:url(#SquareL);marker-end:url(#Arrow2Lend)"
+ d="m 407.86585,83.916245 c -8.09235,12.934463 -16.24193,25.833125 -24.4484,38.695485 -4.10893,6.44009
-8.28,12.93078 -13.72464,18.28932 -5.44312,5.35704 -12.35084,9.56414 -19.94187,10.40186 -3.3055,0.36478
-6.64352,0.0886 -9.9615,-0.13591 -1e-5,0 -3e-5,0 -4e-5,0 -3.30753,-0.22377 -6.65223,-0.39935 -9.91915,0.16371
-3.67892,0.63407 -7.19225,2.2113 -10.11083,4.53904 -10e-6,1e-5 -2e-5,2e-5 -3e-5,2e-5 -2.91857,2.32774
-5.23772,5.40225 -6.67417,8.84797 -1.43645,3.44574 -1.98788,7.25719 -1.58695,10.96875 0.40093,3.71157
1.75359,7.31733 3.89275,10.37682 -1.57329,7.77579 -6.47676,14.83297 -13.21535,19.01981 -4.08578,2.53859
-8.72148,4.0255 -13.0897,6.03963 -2e-5,0 -3e-5,1e-5 -4e-5,2e-5 -4.36719,2.01365 -8.65699,4.73894
-11.05709,8.90627 -10e-6,1e-5 -10e-6,2e-5 -2e-5,3e-5 -1.54971,2.69079 -2.21037,5.86275 -2.00701,8.96123
0.20338,3.09874 1.25331,6.121 2.89275,8.75838 3.2781,5.27351 8.79594,8.88365 14.67878,10.8706 10e-6,0
2e-5,1e-5 4e-5,1e-5 5.05172,1.70623 10.53116,2.32159 15
.76564,1.30607 1e-5,-1e-5 2e-5,-1e-5 3e-5,-1e-5 5.23327,-1.0153 10.20383,-3.73183 13.53666,-7.89237
2.8325,-3.53596 4.39168,-7.94004 5.28933,-12.38079 0,-1e-5 10e-6,-3e-5 10e-6,-4e-5 0.89772,-4.44111
1.18109,-8.97997 1.75051,-13.47498 0.87253,-6.88777 2.42162,-13.6897 4.61772,-20.27603 2.52197,-0.49612
5.17081,-0.33611 7.61472,0.45997 2.44389,0.79608 4.67875,2.2269 6.42464,4.11322 2e-5,1e-5 3e-5,3e-5 5e-5,5e-5
3.21102,3.46934 4.63062,8.27318 5.04051,12.98264 0.41,4.71077 -0.0852,9.44723 -0.1789,14.17488
-0.10721,5.4079 0.30156,10.912 -1.06029,16.14671 -1.55704,5.98502 -5.48588,11.32637 -10.73556,14.59527
-3.77605,-0.86428 -7.77873,-0.72238 -11.48409,0.40712 -3.70537,1.1295 -7.10659,3.24452 -9.75844,6.0682
-4.15358,4.42272 -6.37982,10.5847 -6.11019,16.64605 0,2e-5 0,3e-5 0,4e-5 0.23758,5.34073 2.36859,10.56193
5.83809,14.62917 10e-6,10e-6 2e-5,2e-5 3e-5,3e-5 3.46975,4.06752 8.24802,6.97932 13.4221,8.32573
4.51162,1.17403 9.34056,1.17129 13.82052,-0.11828 4.47975,-1.2895 8.596
35,-3.87695 11.61522,-7.42904 3.02242,-3.55627 4.91711,-8.06019 5.34575,-12.70759 10e-6,-3e-5 10e-6,-5e-5
10e-6,-8e-5 0.42864,-4.64742 -0.61029,-9.42195 -2.93128,-13.47106 -1.10365,-2.89524 -1.08961,-6.20429
0.0386,-9.09005 0,-10e-6 1e-5,-3e-5 1e-5,-4e-5 1.1282,-2.88577 3.36222,-5.32694 6.1369,-6.70594
3.47162,-1.72538 7.76143,-1.72538 11.23305,0 3.47935,0.88812 6.65089,2.94914 8.87568,5.76782 2.22478,2.81869
3.49269,6.38223 3.5483,9.97271 0.0448,2.88989 -0.66677,5.7303 -1.2997,8.55039 -0.63291,2.82001
-1.19432,5.71596 -0.84587,8.58504 0,2e-5 0,3e-5 0,4e-5 0.43816,3.60767 2.33339,6.96423 4.97344,9.46172
2.64067,2.49807 5.99201,4.1741 9.49814,5.13355 10e-6,0 2e-5,1e-5 4e-5,1e-5 8.13425,2.22592 17.27288,0.51296
24.04882,-4.50774 2.95407,-2.80833 5.12951,-6.42944 6.22172,-10.35631 1.09222,-3.92687 1.09889,-8.15119
0.0191,-12.0815 -1.22234,-4.44914 -3.84239,-8.50594 -7.39496,-11.45011 -3.55256,-2.94417 -8.02526,-4.76546
-12.62397,-5.1405 -2e-5,0 -3e-5,0 -4e-5,0 -2.56836,0.72381
-5.27682,0.94784 -7.9292,0.65587 -10e-6,0 -2e-5,0 -4e-5,0 -3.77599,-0.41566 -7.46992,-1.91446
-10.28756,-4.46235 -10e-6,-1e-5 -2e-5,-1e-5 -2e-5,-2e-5 -2.8168,-2.54715 -4.70691,-6.17422 -4.91006,-9.96645
-0.14723,-2.74836 0.56276,-5.4692 1.41517,-8.08617 0.85243,-2.61706 1.85748,-5.20104 2.33283,-7.91207
0.92354,-5.26723 -0.28222,-10.88387 -3.28625,-15.30794 -3.00404,-4.42407 -7.77987,-7.61656 -13.01633,-8.70101
-3.38923,0.38773 -6.89239,-0.26847 -9.91151,-1.8566 -2e-5,-1e-5 -4e-5,-2e-5 -7e-5,-3e-5 -3.23617,-1.70233
-5.90142,-4.47336 -7.47657,-7.7733 -1.57515,-3.29994 -2.05353,-7.11482 -1.34194,-10.70152 0,-2e-5 1e-5,-5e-5
1e-5,-7e-5 0.98555,-6.30654 2.75458,-12.49035 5.25348,-18.36396 1e-5,-2e-5 2e-5,-5e-5 3e-5,-7e-5
2.90825,-6.83578 6.89834,-13.35821 12.56261,-18.16464 5.66117,-4.8038 13.16594,-7.75245 20.54108,-6.89651
4.32392,0.50183 8.42733,2.25397 12.75051,2.76214 4.7583,0.55932 9.69143,-0.45462 13.8434,-2.84533 2e-5,-2e-5
4e-5,-3e-5 6e-5,-4e-5 9.24006,1.13358 17.98407,
5.97778 23.8453,13.21033 5.15234,6.35781 7.99577,14.2147 11.30601,21.69872 1.92466,4.3514 4.05797,8.66096
7.03333,12.37393 10e-6,2e-5 3e-5,4e-5 5e-5,6e-5 2.97478,3.71223 6.87266,6.82357 11.43539,8.16948 2e-5,1e-5
5e-5,1e-5 7e-5,2e-5 4.08278,1.20432 8.59203,0.91743 12.48927,-0.79459 2.77058,2.06261 4.93246,4.93513
6.1476,8.16838 10e-6,2e-5 2e-5,4e-5 2e-5,6e-5 1.21514,3.23328 1.48028,6.81866 0.75396,10.19551
-0.64549,3.00105 -2.03848,5.78453 -2.94997,8.71576 -0.45574,1.4656 -0.79214,2.97858 -0.84237,4.51258
-0.0502,1.5339 0.19468,3.09454 0.85538,4.47976 1.12213,2.35266 3.31808,4.00019 4.78859,6.15235 10e-6,2e-5
3e-5,4e-5 4e-5,6e-5 1.28491,1.88055 1.99273,4.15109 2.00406,6.42866 0,2e-5 0,5e-5 0,7e-5 0.0113,2.27755
-0.67387,4.55499 -1.94,6.44821 -1.26613,1.89323 -3.10926,3.39632 -5.21849,4.25572 -2.10924,0.8594
-4.47799,1.07243 -6.70672,0.60317 -6.72013,2.08 -13.07673,5.33027 -18.69744,9.56041 -3.43389,2.58434
-6.63757,5.58482 -8.83155,9.28034 -2.19309,3.69404 -3.30672,8.16333 -
2.4015,12.36288 0.73825,3.42496 2.77646,6.49085 5.39143,8.82264 2.61545,2.33222 5.78751,3.97275
9.08008,5.17224 2e-5,1e-5 5e-5,2e-5 7e-5,3e-5 7.59964,2.76856 16.01971,3.25052 23.88562,1.3672 2e-5,-10e-6
4e-5,-3e-5 6e-5,-4e-5 5.55583,-4.2436 9.26683,-10.83973 10.0094,-17.79128 0.48273,-4.51901 -0.25456,-9.16391
-2.11291,-13.31132 -1.12772,-3.87126 -0.64207,-8.19191 1.31693,-11.71621 1.95901,-3.5243 5.37216,-6.21769
9.25535,-7.3036 3.03411,-0.84847 6.23896,-0.7413 9.38918,-0.78414 3.15001,-0.0428 6.40369,-0.26967
9.21028,-1.70056 1.87052,-0.95365 3.46254,-2.41445 4.68173,-4.12379 1.21923,-1.70942 2.07411,-3.66326
2.63108,-5.68772 0,-2e-5 10e-6,-4e-5 2e-5,-7e-5 1.11392,-4.04896 1.04531,-8.32057 0.84497,-12.51519 0,-2e-5
0,-5e-5 0,-7e-5 -0.20277,-4.24553 -0.53208,-8.48502 -0.98732,-12.71094 -1.04658,-3.18409 -3.10978,-6.02749
-5.8122,-8.01008 -2.70242,-1.9826 -6.03405,-3.09704 -9.38546,-3.13947 -1.77072,-0.0224 -3.53043,0.24491
-5.29437,0.40133 -1.76389,0.15642 -3.56824,0.19871
-5.27791,-0.26261 -1.52465,-0.4114 -2.93141,-1.21815 -4.11285,-2.26602 -2e-5,-2e-5 -3e-5,-3e-5 -5e-5,-5e-5
-1.1815,-1.04794 -2.14182,-2.33315 -2.88667,-3.72574 -1.48968,-2.78513 -2.11051,-5.95234 -2.4471,-9.09286
0,-2e-5 -10e-6,-5e-5 -10e-6,-7e-5 -0.7501,-6.99887 -0.1865,-14.13231 -1.52514,-21.0428 -0.72945,-3.76565
-2.0464,-7.46897 -4.28746,-10.58183 -2.2404,-3.11195 -5.46685,-5.60479 -9.18911,-6.5259 -3.02141,-0.74768
-6.20154,-0.44617 -9.27072,0.0716 -3.06933,0.51775 -6.11978,1.24879 -9.23079,1.35113 -2e-5,0 -5e-5,0 -7e-5,0
-3.90344,0.1284 -7.81108,-0.74979 -11.38322,-2.32877 -3.5723,-1.57904 -6.81761,-3.84706 -9.69109,-6.49241
-5.74696,-5.29072 -9.96674,-12.00296 -13.94631,-18.72474 -2.39922,-4.05246 -4.71299,-8.17874
-6.40846,-12.57238 -1.69522,-4.39298 -2.67881,-9.02583 -3.50306,-13.661852 l -1.9823,-11.149545"
+ id="path2938"
+ inkscape:path-effect="#path-effect2940;#path-effect2942"
+ inkscape:original-d="m 407.86585,83.916245 c 0,0 -14.11559,27.469705 -24.4484,38.695485
-9.34236,10.14972 -20.62893,24.18364 -33.66651,28.69118 -10.61846,3.67116 -11.93657,-7.91708 -19.88069,0.0278
-8.03966,8.04037 -7.9913,25.39502 -14.47923,34.7326 0,0 -7.13271,14.26573 -13.21535,19.01981 -8.72576,6.81989
-26.98503,4.24108 -24.14685,14.94595 2.83816,10.70488 4.57641,21.84782 15.56452,28.59021 9.79125,6.00799
28.36077,4.86263 29.30237,-6.5863 0.94161,-11.44892 3.2096,-17.00295 7.03985,-25.85581 3.83025,-8.85286
-1.10893,-26.61597 4.61772,-20.27603 0,0 11.6923,-3.64141 14.03941,4.57324 1.70869,5.98028 2.66345,21.33932
4.86161,27.15752 2.19816,5.81821 -0.52766,12.44562 -1.06029,16.14671 -1.09286,7.59409 -3.21008,13.10136
-10.73556,14.59527 0,0 -15.16484,1.49219 -21.24253,6.47532 -6.22299,5.10225 -7.51576,8.72253
-6.11019,16.64609 1.81705,10.24319 9.04679,20.97753 19.26022,22.95493 11.49367,2.22528 19.58074,2.59049
25.43574,-7.54732 4.1679,-7.21663 -1.97686,-19.09584 2.4
1448,-26.17873 0,0 0.33183,-12.5434 6.17549,-15.79603 3.2717,-1.82105 9.2379,-3.16852 11.23305,0 0,0
11.52539,9.6056 12.42398,15.74053 0.95363,6.51078 -5.98915,11.79446 -2.14557,17.13547 3.84359,5.34102
7.61186,11.46161 14.47158,14.59527 8.85083,4.04326 19.94604,4.31564 24.04886,-4.50773 0,0 8.1669,-13.23439
6.24082,-22.43781 -2.16604,-10.34997 -9.48077,-17.46228 -20.01897,-16.59061 0,0 -5.42758,1.53646
-7.9292,0.65587 -6.58909,-2.31941 -16.02955,-7.49314 -15.19768,-14.42882 0.83187,-6.93568 9.55833,8.44447
3.748,-15.99824 -1.55478,-6.54061 -9.59437,-24.45283 -16.30258,-24.00895 0,0 -6.96155,-0.35298
-9.91151,-1.8566 -7.36557,-3.75427 -10.83778,-10.45812 -8.81857,-18.47492 0,0 1.87298,-13.03292
5.25348,-18.36396 7.93496,-12.51342 19.58924,-22.07695 33.10372,-25.06122 4.24644,-0.93771 6.93062,3.3283
12.75051,2.76214 5.10303,-0.49642 9.84185,-6.05074 13.84346,-2.84537 0,0 16.88165,-1.28992 23.8453,13.21033
3.31247,6.89749 4.71066,17.81941 11.30601,21.69872 6.59535,3.87931 11.6
0217,19.87279 18.46884,20.54349 3.94867,0.38568 10.25015,-4.06981 12.48927,-0.79459 0,0 6.35327,10.96916
6.90158,18.36395 0.48511,6.54257 -6.59488,12.262 -2.93696,17.7081 3.65793,5.44611 4.68796,1.4131
4.78863,6.15241 0.15241,7.17408 -4.7607,16.6994 -11.86115,17.73583 0,0 -12.53135,5.17234 -18.69744,9.56041
-6.62245,4.71284 -15.87104,14.96813 -11.23305,21.64322 0,0 7.82042,10.07549 14.47158,13.99491 7.43886,4.38361
19.41887,8.75645 23.88562,1.3672 0,0 8.90884,-10.20704 10.00946,-17.79132 0.87615,-6.0375 -5.07693,-7.979
-2.11291,-13.31132 0,0 4.26218,-15.44258 10.57228,-19.01981 5.94288,-3.36906 15.32144,3.50888
18.59946,-2.4847 0,0 7.61918,-13.6222 8.1578,-22.32684 0.40659,-6.57079 4.32078,-8.81675 -0.98732,-12.71094
0,0 -9.00115,-10.11082 -15.19766,-11.14955 -3.63896,-0.61001 -8.14088,2.91403 -10.57228,0.13872 0,0
-8.10433,-8.53592 -9.44667,-15.08467 -1.56983,-7.65869 4.02354,-15.53542 -1.52515,-21.04287 -5.54869,-5.50744
-5.14034,-14.65591 -13.47657,-17.10773 -6.04893,-1.7
7908 -13.54572,5.32072 -18.50151,1.42268 -4.95579,-3.89803 -26.23756,-15.56939 -35.02069,-27.54592
-5.52823,-7.53822 -8.27517,-17.03053 -9.91152,-26.234232 l -1.9823,-11.149545"
+ sodipodi:nodetypes="cssssszszzsszsssssssssszssssszsssssassszssszssssssssssssssszszssc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,436.04679,77.286097)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-9"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,509.22132,21.628256)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-2"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,402.42607,130.68372)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-95"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,435.76428,185.49397)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-3"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,473.62291,131.24878)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-27"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,508.09122,184.36387)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-31"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,580.41815,77.003571)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-8"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,616.01657,130.11867)" />
+ <path
+ sodipodi:type="arc"
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04799998;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path5876-5"
+ sodipodi:cx="-146.78572"
+ sodipodi:cy="122.70478"
+ sodipodi:rx="5.3571429"
+ sodipodi:ry="5.3571429"
+ d="m -141.42858,122.70478 c 0,2.95867 -2.39847,5.35714 -5.35714,5.35714 -2.95867,0 -5.35714,-2.39847
-5.35714,-5.35714 0,-2.95867 2.39847,-5.35714 5.35714,-5.35714 2.95867,0 5.35714,2.39847 5.35714,5.35714 z"
+ transform="matrix(0.79107591,0,0,0.79107591,580.41815,185.49398)" />
+ </g>
+</svg>
diff --git a/glib/gnode.c b/glib/gnode.c
index 80cc44b..799e131 100644
--- a/glib/gnode.c
+++ b/glib/gnode.c
@@ -820,6 +820,59 @@ g_node_depth_traverse_level (GNode *node,
* It calls the given function for each node visited.
* The traversal can be halted at any point by returning %TRUE from @func.
*/
+
+/**
+ * GTraverseType:
+ * @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.
+ * <informalfigure>
+ * <mediaobject>
+ * <imageobject>
+ * <imagedata align="right" fileref="Sorted_binary_tree_inorder.svg" format="SVG"/>
+ * </imageobject>
+ * <caption>In order: A, B, C, D, E, F, G, H, I</caption>
+ * </mediaobject>
+ * </informalfigure>
+ * @G_PRE_ORDER: visits a node, then its children.
+ * <informalfigure>
+ * <mediaobject>
+ * <imageobject>
+ * <imagedata align="right" fileref="Sorted_binary_tree_preorder.svg" format="SVG"/>
+ * </imageobject>
+ * <caption>Pre order: F, B, A, D, C, E, G, I, H</caption>
+ * </mediaobject>
+ * </informalfigure>
+ * @G_POST_ORDER: visits the node's children, then the node itself.
+ * <informalfigure>
+ * <mediaobject>
+ * <imageobject>
+ * <imagedata align="right" fileref="Sorted_binary_tree_postorder.svg" format="SVG"/>
+ * </imageobject>
+ * <caption>Post order: A, C, E, D, B, H, I, G, F</caption>
+ * </mediaobject>
+ * </informalfigure>
+ * @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.
+ * <informalfigure>
+ * <mediaobject>
+ * <imageobject>
+ * <imagedata align="right" fileref="Sorted_binary_tree_breadth-first_traversal.svg"
format="SVG"/>
+ * </imageobject>
+ * <caption>Level order: F, B, G, A, D, I, C, E, H</caption>
+ * </mediaobject>
+ * </informalfigure>
+ *
+ * Specifies the type of traveral performed by g_tree_traverse(),
+ * g_node_traverse() and g_node_find().
+ */
+
/**
* GTraverseFlags:
* @G_TRAVERSE_LEAVES: only leaf nodes should be visited. This name has
diff --git a/glib/gtree.c b/glib/gtree.c
index c6b3eea..46d7804 100644
--- a/glib/gtree.c
+++ b/glib/gtree.c
@@ -77,7 +77,7 @@ typedef struct _GTreeNode GTreeNode;
* structure representing a <link
* linkend="glib-Balanced-Binary-Trees">Balanced Binary Tree</link>. It
* should be accessed only by using the following functions.
- **/
+ */
struct _GTree
{
GTreeNode *root;
@@ -102,29 +102,29 @@ struct _GTreeNode
static GTreeNode* g_tree_node_new (gpointer key,
- gpointer value);
+ gpointer value);
static void g_tree_insert_internal (GTree *tree,
- gpointer key,
- gpointer value,
- gboolean replace);
+ gpointer key,
+ gpointer value,
+ gboolean replace);
static gboolean g_tree_remove_internal (GTree *tree,
- gconstpointer key,
- gboolean steal);
+ gconstpointer key,
+ gboolean steal);
static GTreeNode* g_tree_node_balance (GTreeNode *node);
static GTreeNode *g_tree_find_node (GTree *tree,
- gconstpointer key);
+ gconstpointer key);
static gint g_tree_node_pre_order (GTreeNode *node,
- GTraverseFunc traverse_func,
- gpointer data);
+ GTraverseFunc traverse_func,
+ gpointer data);
static gint g_tree_node_in_order (GTreeNode *node,
- GTraverseFunc traverse_func,
- gpointer data);
+ GTraverseFunc traverse_func,
+ gpointer data);
static gint g_tree_node_post_order (GTreeNode *node,
- GTraverseFunc traverse_func,
- gpointer data);
+ GTraverseFunc traverse_func,
+ gpointer data);
static gpointer g_tree_node_search (GTreeNode *node,
- GCompareFunc search_func,
- gconstpointer data);
+ GCompareFunc search_func,
+ gconstpointer data);
static GTreeNode* g_tree_node_rotate_left (GTreeNode *node);
static GTreeNode* g_tree_node_rotate_right (GTreeNode *node);
#ifdef G_TREE_DEBUG
@@ -134,7 +134,7 @@ static void g_tree_node_check (GTreeNode *node);
static GTreeNode*
g_tree_node_new (gpointer key,
- gpointer value)
+ gpointer value)
{
GTreeNode *node = g_slice_new (GTreeNode);
@@ -159,9 +159,9 @@ g_tree_node_new (gpointer key,
*
* Creates a new #GTree.
*
- * Return value: a new #GTree.
- **/
-GTree*
+ * Return value: a newly allocated #GTree
+ */
+GTree *
g_tree_new (GCompareFunc key_compare_func)
{
g_return_val_if_fail (key_compare_func != NULL, NULL);
@@ -172,46 +172,46 @@ g_tree_new (GCompareFunc key_compare_func)
/**
* g_tree_new_with_data:
- * @key_compare_func: qsort()-style comparison function.
- * @key_compare_data: data to pass to comparison function.
+ * @key_compare_func: qsort()-style comparison function
+ * @key_compare_data: data to pass to comparison function
*
* Creates a new #GTree with a comparison function that accepts user data.
* See g_tree_new() for more details.
*
- * Return value: a new #GTree.
- **/
-GTree*
+ * Return value: a newly allocated #GTree
+ */
+GTree *
g_tree_new_with_data (GCompareDataFunc key_compare_func,
- gpointer key_compare_data)
+ gpointer key_compare_data)
{
g_return_val_if_fail (key_compare_func != NULL, NULL);
return g_tree_new_full (key_compare_func, key_compare_data,
- NULL, NULL);
+ NULL, NULL);
}
/**
* g_tree_new_full:
- * @key_compare_func: qsort()-style comparison function.
- * @key_compare_data: data to pass to comparison function.
+ * @key_compare_func: qsort()-style comparison function
+ * @key_compare_data: data to pass to comparison function
* @key_destroy_func: a function to free the memory allocated for the key
* used when removing the entry from the #GTree or %NULL if you don't
- * want to supply such a function.
+ * want to supply such a function
* @value_destroy_func: a function to free the memory allocated for the
* value used when removing the entry from the #GTree or %NULL if you
- * don't want to supply such a function.
+ * don't want to supply such a function
*
* Creates a new #GTree like g_tree_new() and allows to specify functions
* to free the memory allocated for the key and value that get called when
* removing the entry from the #GTree.
*
- * Return value: a new #GTree.
- **/
-GTree*
+ * Return value: a newly allocated #GTree
+ */
+GTree *
g_tree_new_full (GCompareDataFunc key_compare_func,
- gpointer key_compare_data,
+ gpointer key_compare_data,
GDestroyNotify key_destroy_func,
- GDestroyNotify value_destroy_func)
+ GDestroyNotify value_destroy_func)
{
GTree *tree;
@@ -258,7 +258,7 @@ g_tree_node_previous (GTreeNode *node)
return tmp;
}
-
+
static inline GTreeNode *
g_tree_node_next (GTreeNode *node)
{
@@ -288,9 +288,9 @@ g_tree_remove_all (GTree *tree)
next = g_tree_node_next (node);
if (tree->key_destroy_func)
- tree->key_destroy_func (node->key);
+ tree->key_destroy_func (node->key);
if (tree->value_destroy_func)
- tree->value_destroy_func (node->value);
+ tree->value_destroy_func (node->value);
g_slice_free (GTreeNode, node);
node = next;
@@ -302,15 +302,16 @@ g_tree_remove_all (GTree *tree)
/**
* g_tree_ref:
- * @tree: a #GTree.
+ * @tree: a #GTree
*
- * Increments the reference count of @tree by one. It is safe to call
- * this function from any thread.
+ * Increments the reference count of @tree by one.
+ *
+ * It is safe to call this function from any thread.
*
- * Return value: the passed in #GTree.
+ * Return value: the passed in #GTree
*
* Since: 2.22
- **/
+ */
GTree *
g_tree_ref (GTree *tree)
{
@@ -323,17 +324,17 @@ g_tree_ref (GTree *tree)
/**
* g_tree_unref:
- * @tree: a #GTree.
+ * @tree: a #GTree
*
- * Decrements the reference count of @tree by one. If the reference count
- * drops to 0, all keys and values will be destroyed (if destroy
- * functions were specified) and all memory allocated by @tree will be
- * released.
+ * Decrements the reference count of @tree by one.
+ * If the reference count drops to 0, all keys and values will
+ * be destroyed (if destroy functions were specified) and all
+ * memory allocated by @tree will be released.
*
* It is safe to call this function from any thread.
*
* Since: 2.22
- **/
+ */
void
g_tree_unref (GTree *tree)
{
@@ -348,15 +349,15 @@ g_tree_unref (GTree *tree)
/**
* g_tree_destroy:
- * @tree: a #GTree.
+ * @tree: a #GTree
*
* Removes all keys and values from the #GTree and decreases its
* reference count by one. If keys and/or values are dynamically
* allocated, you should either free them first or create the #GTree
- * using g_tree_new_full(). In the latter case the destroy functions
+ * using g_tree_new_full(). In the latter case the destroy functions
* you supplied will be called on all keys and values before destroying
* the #GTree.
- **/
+ */
void
g_tree_destroy (GTree *tree)
{
@@ -368,23 +369,25 @@ g_tree_destroy (GTree *tree)
/**
* g_tree_insert:
- * @tree: a #GTree.
- * @key: the key to insert.
- * @value: the value corresponding to the key.
+ * @tree: a #GTree
+ * @key: the key to insert
+ * @value: the value corresponding to the key
*
- * Inserts a key/value pair into a #GTree. If the given key already exists
- * in the #GTree its corresponding value is set to the new value. If you
- * supplied a value_destroy_func when creating the #GTree, the old value is
- * freed using that function. If you supplied a @key_destroy_func when
- * creating the #GTree, the passed key is freed using that function.
+ * Inserts a key/value pair into a #GTree.
+ *
+ * If the given key already exists in the #GTree its corresponding value
+ * is set to the new value. If you supplied a @value_destroy_func when
+ * creating the #GTree, the old value is freed using that function. If
+ * you supplied a @key_destroy_func when creating the #GTree, the passed
+ * key is freed using that function.
*
* The tree is automatically 'balanced' as new key/value pairs are added,
* so that the distance from the root to every leaf is as small as possible.
- **/
+ */
void
g_tree_insert (GTree *tree,
- gpointer key,
- gpointer value)
+ gpointer key,
+ gpointer value)
{
g_return_if_fail (tree != NULL);
@@ -397,11 +400,11 @@ g_tree_insert (GTree *tree,
/**
* g_tree_replace:
- * @tree: a #GTree.
- * @key: the key to insert.
- * @value: the value corresponding to the key.
+ * @tree: a #GTree
+ * @key: the key to insert
+ * @value: the value corresponding to the key
*
- * Inserts a new key and value into a #GTree similar to g_tree_insert().
+ * Inserts a new key and value into a #GTree similar to g_tree_insert().
* The difference is that if the key already exists in the #GTree, it gets
* replaced by the new key. If you supplied a @value_destroy_func when
* creating the #GTree, the old value is freed using that function. If you
@@ -410,11 +413,11 @@ g_tree_insert (GTree *tree,
*
* The tree is automatically 'balanced' as new key/value pairs are added,
* so that the distance from the root to every leaf is as small as possible.
- **/
+ */
void
g_tree_replace (GTree *tree,
- gpointer key,
- gpointer value)
+ gpointer key,
+ gpointer value)
{
g_return_if_fail (tree != NULL);
@@ -493,7 +496,7 @@ g_tree_insert_internal (GTree *tree,
node->left_child = TRUE;
node->balance -= 1;
- tree->nnodes++;
+ tree->nnodes++;
break;
}
@@ -515,16 +518,17 @@ g_tree_insert_internal (GTree *tree,
node->right_child = TRUE;
node->balance += 1;
- tree->nnodes++;
+ tree->nnodes++;
break;
}
}
}
- /* restore balance. This is the goodness of a non-recursive
- implementation, when we are done with balancing we 'break'
- the loop and we are done. */
+ /* Restore balance. This is the goodness of a non-recursive
+ * implementation, when we are done with balancing we 'break'
+ * the loop and we are done.
+ */
while (1)
{
GTreeNode *bparent = path[--idx];
@@ -556,8 +560,8 @@ g_tree_insert_internal (GTree *tree,
/**
* g_tree_remove:
- * @tree: a #GTree.
- * @key: the key to remove.
+ * @tree: a #GTree
+ * @key: the key to remove
*
* Removes a key/value pair from a #GTree.
*
@@ -566,12 +570,12 @@ g_tree_insert_internal (GTree *tree,
* make sure that any dynamically allocated values are freed yourself.
* If the key does not exist in the #GTree, the function does nothing.
*
- * Returns: %TRUE if the key was found (prior to 2.8, this function returned
- * nothing)
- **/
+ * Returns: %TRUE if the key was found (prior to 2.8, this function
+ * returned nothing)
+ */
gboolean
g_tree_remove (GTree *tree,
- gconstpointer key)
+ gconstpointer key)
{
gboolean removed;
@@ -588,17 +592,17 @@ g_tree_remove (GTree *tree,
/**
* g_tree_steal:
- * @tree: a #GTree.
- * @key: the key to remove.
+ * @tree: a #GTree
+ * @key: the key to remove
*
* Removes a key and its associated value from a #GTree without calling
* the key and value destroy functions.
*
* If the key does not exist in the #GTree, the function does nothing.
*
- * Returns: %TRUE if the key was found (prior to 2.8, this function returned
- * nothing)
- **/
+ * Returns: %TRUE if the key was found (prior to 2.8, this function
+ * returned nothing)
+ */
gboolean
g_tree_steal (GTree *tree,
gconstpointer key)
@@ -639,29 +643,30 @@ g_tree_remove_internal (GTree *tree,
while (1)
{
int cmp = tree->key_compare (key, node->key, tree->key_compare_data);
-
+
if (cmp == 0)
break;
else if (cmp < 0)
{
if (!node->left_child)
return FALSE;
-
- path[idx++] = node;
- node = node->left;
+
+ path[idx++] = node;
+ node = node->left;
}
else
{
if (!node->right_child)
return FALSE;
-
- path[idx++] = node;
- node = node->right;
+
+ path[idx++] = node;
+ node = node->right;
}
}
- /* the following code is almost equal to g_tree_remove_node,
- except that we do not have to call g_tree_node_parent. */
+ /* The following code is almost equal to g_tree_remove_node,
+ * except that we do not have to call g_tree_node_parent.
+ */
balance = parent = path[--idx];
g_assert (!parent || parent->left == node || parent->right == node);
left_node = (parent && node == parent->left);
@@ -688,7 +693,7 @@ g_tree_remove_internal (GTree *tree,
else /* node has a right child */
{
GTreeNode *tmp = g_tree_node_next (node);
- tmp->left = node->left;
+ tmp->left = node->left;
if (!parent)
tree->root = node->right;
@@ -710,7 +715,7 @@ g_tree_remove_internal (GTree *tree,
{
GTreeNode *tmp = g_tree_node_previous (node);
tmp->right = node->right;
-
+
if (parent == NULL)
tree->root = node->left;
else if (left_node)
@@ -726,87 +731,87 @@ g_tree_remove_internal (GTree *tree,
}
else /* node has a both children (pant, pant!) */
{
- GTreeNode *prev = node->left;
- GTreeNode *next = node->right;
- GTreeNode *nextp = node;
- int old_idx = idx + 1;
- idx++;
-
- /* path[idx] == parent */
- /* find the immediately next node (and its parent) */
- while (next->left_child)
+ GTreeNode *prev = node->left;
+ GTreeNode *next = node->right;
+ GTreeNode *nextp = node;
+ int old_idx = idx + 1;
+ idx++;
+
+ /* path[idx] == parent */
+ /* find the immediately next node (and its parent) */
+ while (next->left_child)
{
- path[++idx] = nextp = next;
- next = next->left;
+ path[++idx] = nextp = next;
+ next = next->left;
}
-
- path[old_idx] = next;
- balance = path[idx];
-
- /* remove 'next' from the tree */
- if (nextp != node)
- {
- if (next->right_child)
- nextp->left = next->right;
- else
- nextp->left_child = FALSE;
- nextp->balance += 1;
-
- next->right_child = TRUE;
- next->right = node->right;
- }
- else
- node->balance -= 1;
-
- /* set the prev to point to the right place */
- while (prev->right_child)
- prev = prev->right;
- prev->right = next;
-
- /* prepare 'next' to replace 'node' */
- next->left_child = TRUE;
- next->left = node->left;
- next->balance = node->balance;
-
- if (!parent)
- tree->root = next;
- else if (left_node)
- parent->left = next;
- else
- parent->right = next;
+
+ path[old_idx] = next;
+ balance = path[idx];
+
+ /* remove 'next' from the tree */
+ if (nextp != node)
+ {
+ if (next->right_child)
+ nextp->left = next->right;
+ else
+ nextp->left_child = FALSE;
+ nextp->balance += 1;
+
+ next->right_child = TRUE;
+ next->right = node->right;
+ }
+ else
+ node->balance -= 1;
+
+ /* set the prev to point to the right place */
+ while (prev->right_child)
+ prev = prev->right;
+ prev->right = next;
+
+ /* prepare 'next' to replace 'node' */
+ next->left_child = TRUE;
+ next->left = node->left;
+ next->balance = node->balance;
+
+ if (!parent)
+ tree->root = next;
+ else if (left_node)
+ parent->left = next;
+ else
+ parent->right = next;
}
}
-
+
/* restore balance */
if (balance)
while (1)
{
- GTreeNode *bparent = path[--idx];
- g_assert (!bparent || bparent->left == balance || bparent->right == balance);
- left_node = (bparent && balance == bparent->left);
-
- if(balance->balance < -1 || balance->balance > 1)
- {
- balance = g_tree_node_balance (balance);
- if (!bparent)
- tree->root = balance;
- else if (left_node)
- bparent->left = balance;
- else
- bparent->right = balance;
- }
-
- if (balance->balance != 0 || !bparent)
- break;
-
- if (left_node)
- bparent->balance += 1;
- else
- bparent->balance -= 1;
-
- balance = bparent;
+ GTreeNode *bparent = path[--idx];
+ g_assert (!bparent || bparent->left == balance || bparent->right == balance);
+ left_node = (bparent && balance == bparent->left);
+
+ if(balance->balance < -1 || balance->balance > 1)
+ {
+ balance = g_tree_node_balance (balance);
+ if (!bparent)
+ tree->root = balance;
+ else if (left_node)
+ bparent->left = balance;
+ else
+ bparent->right = balance;
+ }
+
+ if (balance->balance != 0 || !bparent)
+ break;
+
+ if (left_node)
+ bparent->balance += 1;
+ else
+ bparent->balance -= 1;
+
+ balance = bparent;
}
-
+
if (!steal)
{
if (tree->key_destroy_func)
@@ -824,19 +829,19 @@ g_tree_remove_internal (GTree *tree,
/**
* g_tree_lookup:
- * @tree: a #GTree.
- * @key: the key to look up.
+ * @tree: a #GTree
+ * @key: the key to look up
*
* Gets the value corresponding to the given key. Since a #GTree is
- * automatically balanced as key/value pairs are added, key lookup is very
- * fast.
+ * automatically balanced as key/value pairs are added, key lookup
+ * is O(log n) (where n is the number of key/value pairs in the tree).
*
- * Return value: the value corresponding to the key, or %NULL if the key was
- * not found.
- **/
+ * Return value: the value corresponding to the key, or %NULL
+ * if the key was not found.
+ */
gpointer
g_tree_lookup (GTree *tree,
- gconstpointer key)
+ gconstpointer key)
{
GTreeNode *node;
@@ -849,18 +854,18 @@ g_tree_lookup (GTree *tree,
/**
* g_tree_lookup_extended:
- * @tree: a #GTree.
- * @lookup_key: the key to look up.
- * @orig_key: returns the original key.
- * @value: returns the value associated with the key.
+ * @tree: a #GTree
+ * @lookup_key: the key to look up
+ * @orig_key: returns the original key
+ * @value: returns the value associated with the key
*
* Looks up a key in the #GTree, returning the original key and the
- * associated value and a #gboolean which is %TRUE if the key was found. This
- * is useful if you need to free the memory allocated for the original key,
- * for example before calling g_tree_remove().
+ * associated value. This is useful if you need to free the memory
+ * allocated for the original key, for example before calling
+ * g_tree_remove().
*
- * Return value: %TRUE if the key was found in the #GTree.
- **/
+ * Return value: %TRUE if the key was found in the #GTree
+ */
gboolean
g_tree_lookup_extended (GTree *tree,
gconstpointer lookup_key,
@@ -887,10 +892,10 @@ g_tree_lookup_extended (GTree *tree,
/**
* g_tree_foreach:
- * @tree: a #GTree.
+ * @tree: a #GTree
* @func: the function to call for each node visited.
* If this function returns %TRUE, the traversal is stopped.
- * @user_data: user data to pass to the function.
+ * @user_data: user data to pass to the function
*
* Calls the given function for each of the key/value pairs in the #GTree.
* The function is passed the key and value of each pair, and the given
@@ -900,7 +905,7 @@ g_tree_lookup_extended (GTree *tree,
* add/remove items). To remove all items matching a predicate, you need
* to add each item to a list in your #GTraverseFunc as you walk over
* the tree, then walk the list and remove each item.
- **/
+ */
void
g_tree_foreach (GTree *tree,
GTraverseFunc func,
@@ -918,7 +923,7 @@ g_tree_foreach (GTree *tree,
while (node)
{
if ((*func) (node->key, node->value, user_data))
- break;
+ break;
node = g_tree_node_next (node);
}
@@ -926,57 +931,39 @@ g_tree_foreach (GTree *tree,
/**
* g_tree_traverse:
- * @tree: a #GTree.
+ * @tree: a #GTree
* @traverse_func: the function to call for each node visited. If this
* function returns %TRUE, the traversal is stopped.
* @traverse_type: the order in which nodes are visited, one of %G_IN_ORDER,
- * %G_PRE_ORDER and %G_POST_ORDER.
- * @user_data: user data to pass to the function.
+ * %G_PRE_ORDER and %G_POST_ORDER
+ * @user_data: user data to pass to the function
*
* Calls the given function for each node in the #GTree.
*
- * Deprecated:2.2: The order of a balanced tree is somewhat arbitrary. If you
- * just want to visit all nodes in sorted order, use g_tree_foreach()
- * instead. If you really need to visit nodes in a different order, consider
- * using an <link linkend="glib-N-ary-Trees">N-ary Tree</link>.
- **/
+ * Deprecated:2.2: The order of a balanced tree is somewhat arbitrary.
+ * If you just want to visit all nodes in sorted order, use
+ * g_tree_foreach() instead. If you really need to visit nodes in
+ * a different order, consider using an
+ * <link linkend="glib-N-ary-Trees">N-ary Tree</link>.
+ */
/**
* GTraverseFunc:
- * @key: a key of a #GTree node.
- * @value: the value corresponding to the key.
- * @data: user data passed to g_tree_traverse().
+ * @key: a key of a #GTree node
+ * @value: the value corresponding to the key
+ * @data: user data passed to g_tree_traverse()
*
* 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.
*
- * Returns: %TRUE to stop the traversal.
- **/
-/**
- * GTraverseType:
- * @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.
- *
- * Specifies the type of traveral performed by g_tree_traverse(),
- * g_node_traverse() and g_node_find().
- **/
+ * Returns: %TRUE to stop the traversal
+ */
void
g_tree_traverse (GTree *tree,
- GTraverseFunc traverse_func,
- GTraverseType traverse_type,
- gpointer user_data)
+ GTraverseFunc traverse_func,
+ GTraverseType traverse_type,
+ gpointer user_data)
{
g_return_if_fail (tree != NULL);
@@ -1019,13 +1006,13 @@ g_tree_traverse (GTree *tree,
* @search_func returns 1, searching will proceed among the key/value
* pairs that have a larger key.
*
- * Return value: the value corresponding to the found key, or %NULL if
- * the key was not found.
+ * Return value: the value corresponding to the found key, or %NULL
+ * if the key was not found.
*/
gpointer
g_tree_search (GTree *tree,
- GCompareFunc search_func,
- gconstpointer user_data)
+ GCompareFunc search_func,
+ gconstpointer user_data)
{
g_return_val_if_fail (tree != NULL, NULL);
@@ -1037,7 +1024,7 @@ g_tree_search (GTree *tree,
/**
* g_tree_height:
- * @tree: a #GTree.
+ * @tree: a #GTree
*
* Gets the height of a #GTree.
*
@@ -1045,8 +1032,8 @@ g_tree_search (GTree *tree,
* If the #GTree contains only one root node the height is 1.
* If the root node has children the height is 2, etc.
*
- * Return value: the height of the #GTree.
- **/
+ * Return value: the height of @tree
+ */
gint
g_tree_height (GTree *tree)
{
@@ -1066,7 +1053,7 @@ g_tree_height (GTree *tree)
height += 1 + MAX(node->balance, 0);
if (!node->left_child)
- return height;
+ return height;
node = node->left;
}
@@ -1074,12 +1061,12 @@ g_tree_height (GTree *tree)
/**
* g_tree_nnodes:
- * @tree: a #GTree.
+ * @tree: a #GTree
*
* Gets the number of nodes in a #GTree.
*
- * Return value: the number of nodes in the #GTree.
- **/
+ * Return value: the number of nodes in @tree
+ */
gint
g_tree_nnodes (GTree *tree)
{
@@ -1088,19 +1075,19 @@ g_tree_nnodes (GTree *tree)
return tree->nnodes;
}
-static GTreeNode*
+static GTreeNode *
g_tree_node_balance (GTreeNode *node)
{
if (node->balance < -1)
{
if (node->left->balance > 0)
- node->left = g_tree_node_rotate_left (node->left);
+ node->left = g_tree_node_rotate_left (node->left);
node = g_tree_node_rotate_right (node);
}
else if (node->balance > 1)
{
if (node->right->balance < 0)
- node->right = g_tree_node_rotate_right (node->right);
+ node->right = g_tree_node_rotate_right (node->right);
node = g_tree_node_rotate_left (node);
}
@@ -1109,7 +1096,7 @@ g_tree_node_balance (GTreeNode *node)
static GTreeNode *
g_tree_find_node (GTree *tree,
- gconstpointer key)
+ gconstpointer key)
{
GTreeNode *node;
gint cmp;
@@ -1122,28 +1109,28 @@ g_tree_find_node (GTree *tree,
{
cmp = tree->key_compare (key, node->key, tree->key_compare_data);
if (cmp == 0)
- return node;
+ return node;
else if (cmp < 0)
- {
- if (!node->left_child)
- return NULL;
+ {
+ if (!node->left_child)
+ return NULL;
- node = node->left;
- }
+ node = node->left;
+ }
else
- {
- if (!node->right_child)
- return NULL;
+ {
+ if (!node->right_child)
+ return NULL;
- node = node->right;
- }
+ node = node->right;
+ }
}
}
static gint
g_tree_node_pre_order (GTreeNode *node,
- GTraverseFunc traverse_func,
- gpointer data)
+ GTraverseFunc traverse_func,
+ gpointer data)
{
if ((*traverse_func) (node->key, node->value, data))
return TRUE;
@@ -1151,13 +1138,13 @@ g_tree_node_pre_order (GTreeNode *node,
if (node->left_child)
{
if (g_tree_node_pre_order (node->left, traverse_func, data))
- return TRUE;
+ return TRUE;
}
if (node->right_child)
{
if (g_tree_node_pre_order (node->right, traverse_func, data))
- return TRUE;
+ return TRUE;
}
return FALSE;
@@ -1165,13 +1152,13 @@ g_tree_node_pre_order (GTreeNode *node,
static gint
g_tree_node_in_order (GTreeNode *node,
- GTraverseFunc traverse_func,
- gpointer data)
+ GTraverseFunc traverse_func,
+ gpointer data)
{
if (node->left_child)
{
if (g_tree_node_in_order (node->left, traverse_func, data))
- return TRUE;
+ return TRUE;
}
if ((*traverse_func) (node->key, node->value, data))
@@ -1180,7 +1167,7 @@ g_tree_node_in_order (GTreeNode *node,
if (node->right_child)
{
if (g_tree_node_in_order (node->right, traverse_func, data))
- return TRUE;
+ return TRUE;
}
return FALSE;
@@ -1188,19 +1175,19 @@ g_tree_node_in_order (GTreeNode *node,
static gint
g_tree_node_post_order (GTreeNode *node,
- GTraverseFunc traverse_func,
- gpointer data)
+ GTraverseFunc traverse_func,
+ gpointer data)
{
if (node->left_child)
{
if (g_tree_node_post_order (node->left, traverse_func, data))
- return TRUE;
+ return TRUE;
}
if (node->right_child)
{
if (g_tree_node_post_order (node->right, traverse_func, data))
- return TRUE;
+ return TRUE;
}
if ((*traverse_func) (node->key, node->value, data))
@@ -1211,8 +1198,8 @@ g_tree_node_post_order (GTreeNode *node,
static gpointer
g_tree_node_search (GTreeNode *node,
- GCompareFunc search_func,
- gconstpointer data)
+ GCompareFunc search_func,
+ gconstpointer data)
{
gint dir;
@@ -1223,25 +1210,25 @@ g_tree_node_search (GTreeNode *node,
{
dir = (* search_func) (node->key, data);
if (dir == 0)
- return node->value;
+ return node->value;
else if (dir < 0)
- {
- if (!node->left_child)
- return NULL;
+ {
+ if (!node->left_child)
+ return NULL;
- node = node->left;
- }
+ node = node->left;
+ }
else
- {
- if (!node->right_child)
- return NULL;
-
- node = node->right;
- }
+ {
+ if (!node->right_child)
+ return NULL;
+
+ node = node->right;
+ }
}
}
-static GTreeNode*
+static GTreeNode *
g_tree_node_rotate_left (GTreeNode *node)
{
GTreeNode *right;
@@ -1265,24 +1252,24 @@ g_tree_node_rotate_left (GTreeNode *node)
if (b_bal <= 0)
{
if (a_bal >= 1)
- right->balance = b_bal - 1;
+ right->balance = b_bal - 1;
else
- right->balance = a_bal + b_bal - 2;
+ right->balance = a_bal + b_bal - 2;
node->balance = a_bal - 1;
}
else
{
if (a_bal <= b_bal)
- right->balance = a_bal - 2;
+ right->balance = a_bal - 2;
else
- right->balance = b_bal - 1;
+ right->balance = b_bal - 1;
node->balance = a_bal - b_bal - 1;
}
return right;
}
-static GTreeNode*
+static GTreeNode *
g_tree_node_rotate_right (GTreeNode *node)
{
GTreeNode *left;
@@ -1306,17 +1293,17 @@ g_tree_node_rotate_right (GTreeNode *node)
if (b_bal <= 0)
{
if (b_bal > a_bal)
- left->balance = b_bal + 1;
+ left->balance = b_bal + 1;
else
- left->balance = a_bal + 2;
+ left->balance = a_bal + 2;
node->balance = a_bal - b_bal + 1;
}
else
{
if (a_bal <= -1)
- left->balance = b_bal + 1;
+ left->balance = b_bal + 1;
else
- left->balance = a_bal + b_bal + 2;
+ left->balance = a_bal + b_bal + 2;
node->balance = a_bal + 1;
}
@@ -1336,10 +1323,10 @@ g_tree_node_height (GTreeNode *node)
right_height = 0;
if (node->left_child)
- left_height = g_tree_node_height (node->left);
+ left_height = g_tree_node_height (node->left);
if (node->right_child)
- right_height = g_tree_node_height (node->right);
+ right_height = g_tree_node_height (node->right);
return MAX (left_height, right_height) + 1;
}
@@ -1358,38 +1345,38 @@ g_tree_node_check (GTreeNode *node)
if (node)
{
if (node->left_child)
- {
- tmp = g_tree_node_previous (node);
- g_assert (tmp->right == node);
- }
+ {
+ tmp = g_tree_node_previous (node);
+ g_assert (tmp->right == node);
+ }
if (node->right_child)
- {
- tmp = g_tree_node_next (node);
- g_assert (tmp->left == node);
- }
+ {
+ tmp = g_tree_node_next (node);
+ g_assert (tmp->left == node);
+ }
left_height = 0;
right_height = 0;
if (node->left_child)
- left_height = g_tree_node_height (node->left);
+ left_height = g_tree_node_height (node->left);
if (node->right_child)
- right_height = g_tree_node_height (node->right);
+ right_height = g_tree_node_height (node->right);
balance = right_height - left_height;
g_assert (balance == node->balance);
if (node->left_child)
- g_tree_node_check (node->left);
+ g_tree_node_check (node->left);
if (node->right_child)
- g_tree_node_check (node->right);
+ g_tree_node_check (node->right);
}
}
static void
g_tree_node_dump (GTreeNode *node,
- gint indent)
+ gint indent)
{
g_print ("%*s%c\n", indent, "", *(char *)node->key);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]