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 
20  ~avltreenode();
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:
80  avltree();
81 
85  ~avltree();
86 
89  void insert(valuetype value);
90 
93  void insert(avltreenode<valuetype> *node);
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 
160  bool remove(avltreenode<valuetype> *node);
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 
217  *find(avltreenode<valuetype> *startnode,
218  valuetype value);
219 
223  void clear();
224 
227  void clearAndDelete();
228 
232  void clearAndArrayDelete();
233 
235  void print() const;
236 
237  #include <rudiments/private/avltree.h>
238 };
239 
240 #include <rudiments/private/avltreeinlines.h>
241 
242 #endif
int32_t compare(valuetype value) const
bool removeAll(valuetype value)
avltreenode< valuetype > * getNext()
bool removeAndArrayDelete(valuetype value)
Definition: avltree.h:77
avltreenode< valuetype > * getLeftChild()
void clear()
void print() const
avltreenode< valuetype > * getNext(avltreenode< valuetype > *node)
uint8_t getLeftHeight()
avltreenode< valuetype > * detach(avltreenode< valuetype > *node)
avltreenode< valuetype > * getPrevious()
avltreenode< valuetype > * getParent()
bool remove(valuetype value)
avltreenode< valuetype > * getRightChild()
void insert(valuetype value)
avltreenode< valuetype > * find(valuetype value)
avltreenode(valuetype value)
void clearAndArrayDelete()
uint64_t getLength() const
bool removeAllAndArrayDelete(valuetype value)
valuetype getValue() const
avltreenode< valuetype > * getFirst()
avltreenode< valuetype > * getPrevious(avltreenode< valuetype > *node)
void clearAndDelete()
avltreenode< valuetype > * getTop()
bool removeAllAndDelete(valuetype value)
avltreenode< valuetype > * getLast()
bool removeAndDelete(valuetype value)
Definition: avltree.h:11
void print() const
uint8_t getRightHeight()