Finished benchmark and plotting

This commit is contained in:
2025-05-05 01:34:33 +02:00
parent b14156589c
commit e45091b066
7 changed files with 183 additions and 23 deletions
+30 -3
View File
@@ -24,10 +24,37 @@ Tree *search(Tree *root, int value) {
return nullptr;
}
void freeTree(Tree *root) {
void traverseInOrder(Tree *root, std::vector<int> *vec) {
if (root != nullptr) {
freeTree(root->left);
freeTree(root->right);
traverseInOrder(root->left, vec);
vec->push_back(root->info);
traverseInOrder(root->right, vec);
}
}
Tree *rebuild(std::vector<int> *vec, int start, int end) {
if (start > end)
return nullptr;
int mid = (start + end) / 2;
Tree *node = new Tree();
node->info = vec->at(mid);
node->left = rebuild(vec, start, mid - 1);
node->right = rebuild(vec, mid + 1, end);
return node;
}
Tree *balance(Tree *root) {
std::vector<int> vec;
traverseInOrder(root, &vec);
return rebuild(&vec, 0, vec.size() - 1);
}
void deleteTree(Tree *root) {
if (root != nullptr) {
deleteTree(root->left);
deleteTree(root->right);
delete root;
}
}