AATree.st
author Claus Gittinger <cg@exept.de>
Thu, 09 Jun 2016 17:01:19 +0200
changeset 3919 57fbcf872e8d
parent 3537 4139da619f6e
child 4114 0d2e2a31ff6d
permissions -rw-r--r--
#OTHER by cg class: LinkedList changed: #at:ifAbsent:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3537
4139da619f6e class: AATree
Claus Gittinger <cg@exept.de>
parents: 2783
diff changeset
     1
"{ Encoding: utf8 }"
4139da619f6e class: AATree
Claus Gittinger <cg@exept.de>
parents: 2783
diff changeset
     2
2279
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
     3
"
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
     4
 COPYRIGHT (c) 2009 by eXept Software AG
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
     5
              All Rights Reserved
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
     6
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
     7
 This software is furnished under a license and may be used
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
     8
 only in accordance with the terms of that license and with the
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    10
 be provided or otherwise made available to, or used by, any
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    11
 other person.  No title to or ownership of the software is
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    12
 hereby transferred.
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    13
"
2266
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
"{ Package: 'stx:libbasic2' }"
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
3537
4139da619f6e class: AATree
Claus Gittinger <cg@exept.de>
parents: 2783
diff changeset
    16
"{ NameSpace: Smalltalk }"
4139da619f6e class: AATree
Claus Gittinger <cg@exept.de>
parents: 2783
diff changeset
    17
2266
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
BinaryTree subclass:#AATree
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	instanceVariableNames:''
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	classVariableNames:''
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	poolDictionaries:''
2761
d53b683402c1 category changes
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
    22
	category:'Collections-Ordered-Trees'
2266
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!AATree class methodsFor:'documentation'!
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
2279
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    27
copyright
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    28
"
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    29
 COPYRIGHT (c) 2009 by eXept Software AG
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    30
              All Rights Reserved
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    31
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    32
 This software is furnished under a license and may be used
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    33
 only in accordance with the terms of that license and with the
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    35
 be provided or otherwise made available to, or used by, any
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    36
 other person.  No title to or ownership of the software is
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    37
 hereby transferred.
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    38
"
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    39
!
cb00c64a12f9 added: #copyright
Claus Gittinger <cg@exept.de>
parents: 2266
diff changeset
    40
2266
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
documentation
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
"
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    An AA tree is a form of balanced tree used for storing and retrieving ordered data efficiently.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    AA trees are named for Arne Andersson, their inventor.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    AA trees are a variation of the red-black tree, which in turn is an enhancement to the 
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
    binary search tree. One caveat with the implementation is that it needs an extra level instvar
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
    in the treeNode; this results in 25% more storage overhead as compared to a Red/Black or plain Binary tree.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    For performance data, see performance.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
3537
4139da619f6e class: AATree
Claus Gittinger <cg@exept.de>
parents: 2783
diff changeset
    51
    Usage:
4139da619f6e class: AATree
Claus Gittinger <cg@exept.de>
parents: 2783
diff changeset
    52
        As seen in the performance charts, AA trees offer better average and worst case
4139da619f6e class: AATree
Claus Gittinger <cg@exept.de>
parents: 2783
diff changeset
    53
        performance, with a lower best case performance. 
4139da619f6e class: AATree
Claus Gittinger <cg@exept.de>
parents: 2783
diff changeset
    54
        Thus providing a more predictable performance (within a factor of 2, as opposed to
4139da619f6e class: AATree
Claus Gittinger <cg@exept.de>
parents: 2783
diff changeset
    55
        a much wider range for sortedCollections)
4139da619f6e class: AATree
Claus Gittinger <cg@exept.de>
parents: 2783
diff changeset
    56
2266
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    [author:]
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
        Original algorithm by Arne Andersson
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
        ported from wikipedia to smalltalk code by Claus Gittinger
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
"
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
!
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
examples
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
"
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
                                                                [exBegin]
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
    |coll|
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    coll := AATree new.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
    (1 to:10) do:[:i | coll add:i].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
    coll addAll:(20 to:30).
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    coll inspect   
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
                                                                [exEnd]
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
                                                                [exBegin]
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    |tree|
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    tree := AATree new.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    tree add:'hello'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    tree add:'aaaa'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    tree add:'AAAb'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
    tree add:'aaaC'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    tree add:'world'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
    tree asOrderedCollection     
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
                                                                [exEnd]
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
                                                                [exBegin]
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
    |tree|
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    tree := AATree sortBlock:[:a :b | a asLowercase < b asLowercase].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    tree add:'hello'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
    tree add:'aaaa'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    tree add:'AAAb'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
    tree add:'aaaC'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
    tree add:'world'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
    tree asOrderedCollection     
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
                                                                [exEnd]
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
    timing 1:
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
                                                                [exBegin]
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
    |N randomNumbers coll1_BT coll2_AT coll3_SC t1_BT t2_AT t3_SC|
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
    N := 1000000.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
    randomNumbers := (1 to:N) collect:[:i | Random nextInteger].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    ObjectMemory garbageCollect.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
    t1_BT := Time millisecondsToRun:[
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
        coll1_BT := BinaryTree new.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
        coll1_BT addAll:randomNumbers
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
    coll1_BT := nil.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    ObjectMemory garbageCollect.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
    t2_AT := Time millisecondsToRun:[
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
        coll2_AT := AATree new.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
        coll2_AT addAll:randomNumbers
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
    ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
    coll2_AT := nil.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
    ObjectMemory garbageCollect.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
    t3_SC := Time millisecondsToRun:[
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
        coll3_SC := SortedCollection new.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
        coll3_SC addAll:randomNumbers
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
    ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
    coll3_SC := nil.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
    ObjectMemory garbageCollect.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
    randomNumbers := nil.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
    Transcript show:'Time to insert random '; show:N; show:' into SortedCollection: '; show:t3_SC; showCR:'ms'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    Transcript show:'Time to insert random '; show:N; show:' into BinaryTree: '; show:t1_BT; showCR:'ms'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
    Transcript show:'Time to insert random '; show:N; show:' into AATree: '; show:t2_AT; showCR:'ms'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
    ObjectMemory garbageCollect.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
    t1_BT := Time millisecondsToRun:[
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
        coll1_BT := BinaryTree new.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
        coll1_BT addAll:(1 to:100000).
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
    ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
    coll1_BT := nil.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
    ObjectMemory garbageCollect.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
    t2_AT := Time millisecondsToRun:[
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
        coll2_AT := AATree new.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
        coll2_AT addAll:(1 to:100000)
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
    ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
    coll2_AT := nil.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
    ObjectMemory garbageCollect.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
    t3_SC := Time millisecondsToRun:[
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
        coll3_SC := SortedCollection new.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
        coll3_SC addAll:(1 to:100000)
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
    ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
    coll3_SC := nil.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
    ObjectMemory garbageCollect.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
    Transcript show:'Time to insert ordered '; show:N; show:' into SortedCollection: '; show:t3_SC; showCR:'ms'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
    Transcript show:'Time to insert ordered '; show:N; show:' into BinaryTree: '; show:t1_BT; showCR:'ms'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
    Transcript show:'Time to insert ordered '; show:N; show:' into AATree: '; show:t2_AT; showCR:'ms'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
    ObjectMemory garbageCollect.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
    t1_BT := Time millisecondsToRun:[
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
        coll1_BT := BinaryTree new.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
        coll1_BT addAll:(100000 downTo:1).
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
    ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    coll1_BT := nil.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
    ObjectMemory garbageCollect.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
    t2_AT := Time millisecondsToRun:[
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
        coll2_AT := AATree new.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
        coll2_AT addAll:(100000 downTo:1)
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
    ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
    coll2_AT := nil.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
    ObjectMemory garbageCollect.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    t3_SC := Time millisecondsToRun:[
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
        coll3_SC := SortedCollection new.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
        coll3_SC addAll:(100000 downTo:1)
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
    ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
    coll3_SC := nil.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
    ObjectMemory garbageCollect.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
    Transcript show:'Time to insert reverse ordered '; show:N; show:' into SortedCollection: '; show:t3_SC; showCR:'ms'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
    Transcript show:'Time to insert reverse ordered '; show:N; show:' into BinaryTree: '; show:t1_BT; showCR:'ms'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
    Transcript show:'Time to insert reverse ordered '; show:N; show:' into AATree: '; show:t2_AT; showCR:'ms'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
                                                                [exEnd]
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
  timing 2:  
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
                                                                [exBegin]
2760
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   187
    |allSelectors coll1_SC coll2_BT coll3_AT coll4_Trie t1_SC t2_BT t3_AT t4_Trie|
2266
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
    allSelectors := OrderedCollection new.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
    Smalltalk allClassesDo:[:cls |
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
        cls instAndClassSelectorsAndMethodsDo:[:sel :mthd |
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
            allSelectors add:sel.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
        ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
    ].
2760
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   195
    Transcript show:'Unique selectors: '; show:allSelectors asSet size; showCR:''.
2266
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
    t1_SC := Time millisecondsToRun:[
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
        coll1_SC := SortedCollection new.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
        allSelectors do:[:sel |
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
            coll1_SC add:sel
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
        ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
    ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
    Transcript show:'Time to insert '; show:coll1_SC size; show:' selectors into SortedCollection: '; show:t1_SC; showCR:'ms'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
    t2_BT := Time millisecondsToRun:[
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
        coll2_BT := BinaryTree new.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
        allSelectors do:[:sel |
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
            coll2_BT add:sel
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
        ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
    ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
    Transcript show:'Time to insert '; show:coll2_BT size; show:' selectors into BinaryTree: '; show:t2_BT; showCR:'ms'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
    t3_AT := Time millisecondsToRun:[
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
        coll3_AT := BinaryTree new.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
        allSelectors do:[:sel |
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
            coll3_AT add:sel
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
        ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
    ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
    Transcript show:'Time to insert '; show:coll3_AT size; show:' selectors into AATree: '; show:t3_AT; showCR:'ms'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
2760
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   221
    t4_Trie := Time millisecondsToRun:[
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   222
        coll4_Trie := TrieCollection new.
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   223
        allSelectors do:[:sel |
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   224
            coll4_Trie add:sel
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   225
        ].
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   226
    ].
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   227
    Transcript show:'Time to insert '; show:coll4_Trie size; show:' selectors into Trie: '; show:t4_Trie; showCR:'ms'.
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   228
2266
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
    t1_SC := Time millisecondsToRun:[
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
        allSelectors do:[:sel |
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
            coll1_SC remove:sel
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
        ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
    ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
    self assert:(coll1_SC isEmpty).
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
    Transcript show:'Time to remove selectors from SortedCollection: '; show:t1_SC; showCR:'ms'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
    t2_BT := Time millisecondsToRun:[
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
        allSelectors do:[:sel |
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
            coll2_BT remove:sel
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
        ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
    ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
    self assert:(coll2_BT isEmpty).
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
    Transcript show:'Time to remove selectors from BinaryTree: '; show:t2_BT; showCR:'ms'.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
    t3_AT := Time millisecondsToRun:[
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
        allSelectors do:[:sel |
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
            coll3_AT remove:sel
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
        ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
    ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
    self assert:(coll3_AT isEmpty).
2760
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   251
    Transcript show:'Time to remove selectors from AATree: '; show:t3_AT; showCR:'ms'.
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   252
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   253
    t4_Trie := Time millisecondsToRun:[
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   254
        allSelectors do:[:sel |
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   255
            coll4_Trie remove:sel
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   256
        ].
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   257
    ].
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   258
    self assert:(coll4_Trie isEmpty).
6e119df458a9 changed: #examples
Claus Gittinger <cg@exept.de>
parents: 2404
diff changeset
   259
    Transcript show:'Time to remove selectors from Trie: '; show:t4_Trie; showCR:'ms'.
2266
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
                                                                [exEnd]
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
"
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
!
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
performance
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
"
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
    Time to insert random 100000 individually into SortedCollection: 6037ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
    Time to insert random 100000 en-bloque into SortedCollection: 172ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
    Time to insert in order 100000 individually into SortedCollection: 31ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
    Time to insert in order 100000 en-bloque into SortedCollection: 125ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
    Time to insert in reverse order 100000 individually into SortedCollection: 93ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
    Time to insert in reverse order 100000 en-bloque into SortedCollection: 125ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
    Time to remove in random order 100000 from SortedCollection: 6380ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
    Time to remove in order 100000 from SortedCollection: 109ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
    Time to remove in reverse order 100000 from SortedCollection: 125ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
    Time to insert random 100000 individually into AATree: 281ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
    Time to insert random 100000 en-bloque into AATree: 265ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
    Time to insert in order 100000 individually into AATree: 281ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
    Time to insert in order 100000 en-bloque into AATree: 328ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
    Time to insert in reverse order 100000 individually into AATree: 203ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
    Time to insert in reverse order 100000 en-bloque into AATree: 218ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
    Time to remove in random order 100000 from AATree: 452ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
    Time to remove in order 100000 from AATree: 312ms
2404
9a2681a6525c changed: #performance
Claus Gittinger <cg@exept.de>
parents: 2279
diff changeset
   285
    Time to remove in reverse order 100000 from AATree: 499ms
2266
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
    Time to insert random 100000 individually into BinaryTree: 156ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
    Time to insert random 100000 en-bloque into BinaryTree: 156ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
    Time to insert in order 100000 individually into BinaryTree: 195921ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
    Time to insert in order 100000 en-bloque into BinaryTree: 205266ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
    Time to insert in reverse order 100000 individually into BinaryTree: 202271ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
    Time to insert in reverse order 100000 en-bloque into BinaryTree: 197684ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
    Time to remove in random order 100000 from BinaryTree: 234ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
    Time to remove in order 100000 from BinaryTree: 78ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
    Time to remove in reverse order 100000 from BinaryTree: 78ms
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
"
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
! !
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
!AATree methodsFor:'adding & removing'!
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
add:anObject
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
    "add the argument, anObject to the receiver.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
     Returns the object (sigh).
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
     WARNING: do not add/remove elements while iterating over the receiver.
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
              Iterate over a copy to do this."
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
    treeRoot isNil ifTrue:[
2769
711bb03cb3c1 node class is private
Claus Gittinger <cg@exept.de>
parents: 2761
diff changeset
   309
        treeRoot := self treeNodeClass data:anObject level:1.
2783
4d98d582fa06 changed: #add:
Claus Gittinger <cg@exept.de>
parents: 2780
diff changeset
   310
    ] ifFalse:[
4d98d582fa06 changed: #add:
Claus Gittinger <cg@exept.de>
parents: 2780
diff changeset
   311
        treeRoot := treeRoot insert:anObject usingSortBlock:sortBlock.
2266
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
    ].
d04df8bb00ea initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
    ^ anObject "sigh - collection protocol"
2769
711bb03cb3c1 node class is private
Claus Gittinger <cg@exept.de>
parents: 2761
diff changeset
   314
2783
4d98d582fa06 changed: #add:
Claus Gittinger <cg@exept.de>
parents: 2780
diff changeset
   315
    "Modified: / 05-08-2012 / 12:36:26 / cg"
2769
711bb03cb3c1 node class is private
Claus Gittinger <cg@exept.de>
parents: 2761
diff changeset
   316
!
711bb03cb3c1 node class is private
Claus Gittinger <cg@exept.de>
parents: 2761
diff changeset
   317
711bb03cb3c1 node class is private
Claus Gittinger <cg@exept.de>
parents: 2761
diff changeset
   318
treeNodeClass
711bb03cb3c1 node class is private
Claus Gittinger <cg@exept.de>
parents: 2761
diff changeset
   319
    ^ AATreeNode
711bb03cb3c1 node class is private
Claus Gittinger <cg@exept.de>
parents: 2761
diff changeset
   320
711bb03cb3c1 node class is private
Claus Gittinger <cg@exept.de>
parents: 2761
diff changeset
   321
    "Created: / 05-08-2012 / 11:39:29 / cg"
711bb03cb3c1 node class is private
Claus Gittinger <cg@exept.de>
parents: 2761
diff changeset
   322
! !
711bb03cb3c1 node class is private
Claus Gittinger <cg@exept.de>
parents: 2761
diff changeset
   323
2780
Claus Gittinger <cg@exept.de>
parents: 2769
diff changeset
   324
!AATree class methodsFor:'documentation'!
2769
711bb03cb3c1 node class is private
Claus Gittinger <cg@exept.de>
parents: 2761
diff changeset
   325
711bb03cb3c1 node class is private
Claus Gittinger <cg@exept.de>
parents: 2761
diff changeset
   326
version
3537
4139da619f6e class: AATree
Claus Gittinger <cg@exept.de>
parents: 2783
diff changeset
   327
    ^ '$Header: /cvs/stx/stx/libbasic2/AATree.st,v 1.9 2015-04-10 06:55:43 cg Exp $'
2769
711bb03cb3c1 node class is private
Claus Gittinger <cg@exept.de>
parents: 2761
diff changeset
   328
!
711bb03cb3c1 node class is private
Claus Gittinger <cg@exept.de>
parents: 2761
diff changeset
   329
711bb03cb3c1 node class is private
Claus Gittinger <cg@exept.de>
parents: 2761
diff changeset
   330
version_CVS
3537
4139da619f6e class: AATree
Claus Gittinger <cg@exept.de>
parents: 2783
diff changeset
   331
    ^ '$Header: /cvs/stx/stx/libbasic2/AATree.st,v 1.9 2015-04-10 06:55:43 cg Exp $'
2769
711bb03cb3c1 node class is private
Claus Gittinger <cg@exept.de>
parents: 2761
diff changeset
   332
! !
3537
4139da619f6e class: AATree
Claus Gittinger <cg@exept.de>
parents: 2783
diff changeset
   333