54 if (current->
key==0) {
return NULL; }
55 while (current !=
leaf) {
56 if (searchKey < current->key) {
60 if (searchKey > current->
key) {
63 }
else {
return current; }
86 if (head->
x==0) {
return NULL; }
else {
return head; }
118 current = current->
right; }
120 themax.
i = current->
key;
121 themax.
j = current->
key;
135 current = current->
left; }
148 while ((current!=NULL) && (w==current->
right)) {
150 current = current->
parent;
181 if (current != NULL) {
182 current->
stored += newStored;
187 newitem.
m = newStored;
192 newNode->
key = newKey;
193 newNode->
stored = newStored;
194 newNode->
color =
true;
204 if (current->
key==0) {
211 while (current !=
leaf) {
212 if (newKey < current->key) {
215 newNode->
parent = current;
216 current->
left = newNode;
222 newNode->
parent = current;
223 current->
right = newNode;
242 z->
color =
false;
return; }
294 if (z == NULL) {
return; }
320 else { x = y->
right; }
349 while ((x !=
root) && (x->
color==
false)) {
352 if (w->
color==
true) {
378 if (w->
color==
true) {
462 std::cout <<
"\nTREE SIZE = " <<
support << std::endl;
463 std::cout <<
"HEAP SIZE = " <<
heap->
heapSize() << std::endl;
464 std::cout <<
"MAXIMUM (" << max.
j<<
" " << max.
m <<
")" << std::endl;
476 if (z==
leaf) {
return; }
478 std::cout <<
"(" << z->
key <<
" " << z->
stored <<
" " << z->
color <<
") [" << z->
heap_ptr <<
"]"<<std::endl;
myElement * parent
Pointer zum Elternknoten.
myElement * leaf
Liste aller Blaetter im Baum.
void rotateRight(myElement *y)
Routiert den Baum am Element x um 1 nach rechts.
void insertItem(int newKey, double newStored)
Fuegt den angegeben Wert an der Stelle des angegeben Keys in den Baum ein.
void updateItem(mytuple *address, mytuple newData)
Updated das Element an der angegeben Adresse mit dem uebergeben Wert.
void printHeap()
Gibt die Elemente im Heap aus.
mytuple returnMaximum()
Gibt das maximale Element im Heap zurueck. Keine Aenderungen im Heap.
int returnArraysize()
Gibt die Groesse des Wertearrays zurueck.
bool color
Farbmarkierung des Knotens im Baum (true = rot, false = schwarz).
myElement * root
Wurzelknoten des Baumes.
myDpair * returnSubtreeAsList(myElement *z, myDpair *head)
Gibt den Unterbaum von z als Liste von Dpairs zurueck.
void rotateLeft(myElement *x)
Routiert den Baum am Element x um 1 nach links.
myElement * returnSuccessor(myElement *z)
Gibt den Nachfolger von Element z zurueck.
void printSubTree(myElement *z)
Gibt den Unterbaum von aus.
mytuple * heap_ptr
Pointer zur Position des Elements im myMaxheap.
void insertCleanup(myElement *z)
Ordnet den Baum nach einfuegen eines Elementes wieder.
myDpair * next
Pointer auf naechstes Datenpaar.
int returnHeaplimit()
Gibt die Groesse des Heaps aus (1-maxsize).
void printHeap()
Gibt die Elemente des Heaps aus.
myElement * right
Pointer zum rechten Kind.
void deleteTree()
Loescht alle Elemente aus den Baum.
myElement * left
Pointer zum linken Kind.
int heapSize()
gibt die Groesse des heaps zurueck (maxheap-1).
int returnNodecount()
Liefert die Anzahl der Elemente im Baum zurueck.
myDpair * returnTreeAsList()
Liefert den gesamten Baum als eine Liste von DPairs zurueck.
int returnHeaplimit()
Gibt den Index vom ersten ungenutzen Element zurueck.
double y
Beschreibt den Wert/Parameter an der Stelle x.
int key
Der Key der Position im Baum.
mytuple returnMaxStored()
Liefert die Adresse und den Wert des maximalen Elements im Baum zurueck.
mytuple * insertItem(const mytuple newData)
Fuegt newData in den Heap ein und gibt die Adresse davon zurueck.
void printTree()
Gibt den Baum in "in Order" Reihenfolge aus.
myElement * returnMinKey(myElement *z)
Gibt das kleinste Element im Unterbaum von z zurueck.
void deleteItem(mytuple *address)
Entfernt das Element an der angegeben Adresse.
mytuple returnMaxKey()
Liefert die Adresse des maximalen Elements im Baum zurueck.
int i
Zeilenindex des Elements.
myElement * findItem(const int searchKey)
Sucht das Element an den angegeben Key und gibt es zurueck.
int returnArraysize()
Gibt die Maxsize des Heaps aus.
int support
Anzahl der Elemente im Baum.
double m
Abgelegter Wert/Parameter.
void deleteSubTree(myElement *z)
Loesche den Unterbaum von z.
myMaxheap * heap
Maxheap des Baumes.
void deleteCleanup(myElement *x)
Ordnet den Baum nach loeschen eines Elementes wieder.
int x
Beschreibt einen Key oder einen Index.
int j
Spaltenindex des Elements.
void deleteItem(int killKey)
Entfernt das Element an den angegeben Key aus den Baum.
double stored
Der Wert/Parameter an dieser Stelle.