Rudiments
avltree.h
1 // Copyright (c) 1999-2018 David Muse
2 // See the COPYING file for more information.
3 
4 #ifndef RUDIMENTS_AVLTREE_H
5 #define RUDIMENTS_AVLTREE_H
6 
7 #include <rudiments/private/avltreeincludes.h>
8 
10 template <class valuetype>
11 class avltreenode {
12  public:
15  avltreenode(valuetype value);
16 
21 
23  valuetype getValue() const;
24 
28  int32_t compare(valuetype value) const;
29 
34  int32_t compare(avltreenode<valuetype> *peer) const;
35 
39 
43 
47 
49  uint8_t getLeftHeight();
50 
52  uint8_t getRightHeight();
53 
58 
63 
65  void print() const;
66 
67  #include <rudiments/private/avltreenode.h>
68 };
69 
76 template < class valuetype >
77 class avltree {
78  public:
81 
86 
89  void insert(valuetype value);
90 
94 
98 
105  bool remove(valuetype value);
106 
114  bool removeAndDelete(valuetype value);
115 
124  bool removeAndArrayDelete(valuetype value);
125 
132  bool removeAll(valuetype value);
133 
141  bool removeAllAndDelete(valuetype value);
142 
151  bool removeAllAndArrayDelete(valuetype value);
152 
161 
171 
182 
184  uint64_t getLength() const;
185 
188 
192 
196 
201  avltreenode<valuetype> *node);
202 
207  avltreenode<valuetype> *node);
208 
211  avltreenode<valuetype> *find(valuetype value);
212 
218  valuetype value);
219 
223  void clear();
224 
228 
233 
235  void print() const;
236 
237  #include <rudiments/private/avltree.h>
238 };
239 
240 #include <rudiments/private/avltreeinlines.h>
241 
242 #endif
Definition: avltree.h:77
avltreenode< valuetype > * getTop()
void insert(avltreenode< valuetype > *node)
avltreenode< valuetype > * getLast()
bool removeAndArrayDelete(valuetype value)
bool removeAndDelete(valuetype value)
void clearAndArrayDelete()
void clearAndDelete()
bool remove(valuetype value)
bool removeAndArrayDelete(avltreenode< valuetype > *node)
avltreenode< valuetype > * getPrevious(avltreenode< valuetype > *node)
void insert(valuetype value)
bool removeAndDelete(avltreenode< valuetype > *node)
void print() const
avltreenode< valuetype > * detach(avltreenode< valuetype > *node)
bool removeAllAndArrayDelete(valuetype value)
bool removeAll(valuetype value)
bool remove(avltreenode< valuetype > *node)
avltreenode< valuetype > * getNext(avltreenode< valuetype > *node)
avltreenode< valuetype > * find(valuetype value)
avltreenode< valuetype > * getFirst()
uint64_t getLength() const
bool removeAllAndDelete(valuetype value)
void clear()
avltreenode< valuetype > * find(avltreenode< valuetype > *startnode, valuetype value)
Definition: avltree.h:11
void print() const
int32_t compare(avltreenode< valuetype > *peer) const
avltreenode< valuetype > * getParent()
valuetype getValue() const
avltreenode(valuetype value)
avltreenode< valuetype > * getPrevious()
avltreenode< valuetype > * getNext()
avltreenode< valuetype > * getRightChild()
uint8_t getLeftHeight()
avltreenode< valuetype > * getLeftChild()
uint8_t getRightHeight()
int32_t compare(valuetype value) const