62 lines
1.6 KiB
C++
62 lines
1.6 KiB
C++
#include "ExtendedBinaryTree.h"
|
|
#include <iostream>
|
|
|
|
ExtendedBinaryTree::ExtendedBinaryTree(Ware *rootNodeKey) {
|
|
ExtendedBinaryTreeNode *root = new ExtendedBinaryTreeNode(rootNodeKey);
|
|
this->rootNode = root;
|
|
}
|
|
|
|
ExtendedBinaryTreeNode *ExtendedBinaryTree::insert(Ware *key) {
|
|
return this->rootNode->insert(key);
|
|
}
|
|
|
|
ExtendedBinaryTreeNode *ExtendedBinaryTree::search(int value) {
|
|
ExtendedBinaryTreeNode *node = this->rootNode;
|
|
while (value != node->key->getVerkaufspreis() && node != nullptr) {
|
|
if (value > node->key->getVerkaufspreis()) {
|
|
node = node->right;
|
|
} else {
|
|
node = node->left;
|
|
}
|
|
}
|
|
return node;
|
|
}
|
|
|
|
ExtendedBinaryTreeNode *ExtendedBinaryTree::deleteItem(Ware *key) {
|
|
return this->rootNode->deleteItem(key);
|
|
}
|
|
|
|
ExtendedBinaryTreeNode *
|
|
ExtendedBinaryTree::findMin(ExtendedBinaryTreeNode *node) {
|
|
while (node->left != nullptr) {
|
|
node = node->left;
|
|
}
|
|
return node;
|
|
}
|
|
|
|
ExtendedBinaryTreeNode *
|
|
ExtendedBinaryTree::findMax(ExtendedBinaryTreeNode *node) {
|
|
while (node->right != nullptr) {
|
|
node = node->right;
|
|
}
|
|
return node;
|
|
}
|
|
|
|
// function to print a tree in pre-order: (sub)root, left (sub)tree, right
|
|
// (sub)tree
|
|
std::string ExtendedBinaryTree::printPreorder(ExtendedBinaryTreeNode *node) {
|
|
std::stringstream output;
|
|
output << node->key << std::endl;
|
|
|
|
if (node->left != nullptr) {
|
|
output << this->printPreorder(node->left);
|
|
}
|
|
if (node->right != nullptr) {
|
|
output << this->printPreorder(node->right);
|
|
}
|
|
return output.str();
|
|
}
|
|
|
|
std::string ExtendedBinaryTree::printPreorder() {
|
|
return this->printPreorder(this->rootNode);
|
|
} |