Initial Commit
This commit is contained in:
parent
8fbb89f452
commit
5627eac84b
|
|
@ -0,0 +1,62 @@
|
|||
#include "ExtendedBinaryTreeNode.h"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
ExtendedBinaryTreeNode::ExtendedBinaryTreeNode(Ware *key) {
|
||||
this->key = key;
|
||||
this->left = nullptr;
|
||||
this->right = nullptr;
|
||||
}
|
||||
|
||||
ExtendedBinaryTreeNode *ExtendedBinaryTreeNode::insert(Ware *key) {
|
||||
if (key->getVerkaufspreis() > this->key->getVerkaufspreis()) {
|
||||
if (this->right == nullptr) {
|
||||
ExtendedBinaryTreeNode *temp = new ExtendedBinaryTreeNode(key);
|
||||
this->right = temp;
|
||||
return this->right;
|
||||
}
|
||||
this->right->insert(key);
|
||||
} else {
|
||||
if (this->left == nullptr) {
|
||||
ExtendedBinaryTreeNode *temp = new ExtendedBinaryTreeNode(key);
|
||||
this->left = temp;
|
||||
return this->left;
|
||||
}
|
||||
this->left->insert(key);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
ExtendedBinaryTreeNode *ExtendedBinaryTreeNode::deleteItem(Ware *key) {
|
||||
ExtendedBinaryTreeNode *node = this;
|
||||
|
||||
if (node == nullptr) {
|
||||
return this;
|
||||
} else if (key->getVerkaufspreis() < node->key->getVerkaufspreis()) {
|
||||
node->left = node->left->deleteItem(key);
|
||||
} else if (key->getVerkaufspreis() > node->key->getVerkaufspreis()) {
|
||||
node->right = node->right->deleteItem(key);
|
||||
} else {
|
||||
if (node->left == nullptr && node->right == nullptr) {
|
||||
delete node;
|
||||
node = nullptr;
|
||||
} else if (node->left == nullptr) { // only children in right subtree
|
||||
ExtendedBinaryTreeNode *temp = node;
|
||||
node = node->right;
|
||||
delete temp;
|
||||
} else if (this->right == nullptr) { // only children in left subtree
|
||||
ExtendedBinaryTreeNode *temp = node;
|
||||
node = node->left;
|
||||
delete temp;
|
||||
} else { // we have to keep the BST structure, here, we look for the minimum
|
||||
// in the right subtree (see lecture)
|
||||
ExtendedBinaryTreeNode *temp = node->right;
|
||||
while (temp->left != nullptr) {
|
||||
temp = temp->left;
|
||||
}
|
||||
node->key = temp->key;
|
||||
node->right = node->right->deleteItem(temp->key);
|
||||
}
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
#include "Ware.h"
|
||||
|
||||
std::ostream &operator<<(std::ostream &out, const Ware &ware) {
|
||||
out << "Name: " << ware.getBezeichnung() << ", SN: " << ware.getSeriennummer()
|
||||
<< ", Gewicht: " << ware.getGewicht()
|
||||
<< ", EK: " << ware.getEinkaufspreis()
|
||||
<< ", VK: " << ware.getVerkaufspreis();
|
||||
return out;
|
||||
}
|
||||
Loading…
Reference in New Issue