(*)~reworking this project

This commit is contained in:
2023-06-25 07:33:06 +01:00
parent b58ee52a81
commit 6d504da381
2 changed files with 49 additions and 17 deletions

View File

@@ -1,17 +1,11 @@
CC=clang++
CFLAGS=-pedantic -Wall -ggdb
VFLAGS=--show-leak-kinds=all --leak-check=full
OUT=
list: list.cpp
$(OUT): $(OUT).cpp
$(CC) $(CFLAGS) $^ -o $@
.PHONY: memcheck_list
memcheck_list: list
valgrind $(VFLAGS) ./$^;
btree: btree.cpp
$(CC) $(CFLAGS) $^ -o $@
.PHONY: memcheck_btree
memcheck_btree: btree
.PHONY: memcheck
memcheck: $(OUT)
valgrind $(VFLAGS) ./$^;

View File

@@ -45,13 +45,51 @@ BinaryTree<T> *insert(BinaryTree<T> *tree, T value)
*node = insert(*node, value);
return tree;
}
*node = new BinaryTree<T>;
(*node)->value = value;
(*node)->left = (*node)->right = nullptr;
(*node)->compare = tree->compare;
*node = new BinaryTree<T>;
(*node)->value = value;
(*node)->left = nullptr;
(*node)->right = nullptr;
(*node)->compare = tree->compare;
return tree;
}
template <typename T>
void rightRotate(BinaryTree<T> **tree)
{
auto left = *tree->left;
*tree->left = left->right;
left->right = *tree;
*tree = left;
}
template <typename T>
void leftRotate(BinaryTree<T> **tree)
{
auto right = (*tree)->right;
(*tree)->right = right->left;
right->left = *tree;
*tree = right;
}
template <typename T>
std::ostream &operator<<(std::ostream &ostream, const BinaryTree<T> *btree)
{
if (!btree)
return ostream;
ostream << btree->value << "(";
if (btree->left)
ostream << btree->left;
if (btree->left && btree->right)
ostream << ", ";
if (btree->right)
ostream << btree->right;
ostream << ")";
return ostream;
}
void test()
{}
int main(void)
{
auto tree = new BinaryTree<int>;
@@ -69,9 +107,9 @@ int main(void)
for (int i = 0; i <= 5; ++i)
tree = insert(tree, i * 2);
std::cout << tree->left->value << ", "
<< tree->value << ", "
<< tree->right->value << std::endl;
leftRotate(&tree);
std::cout << tree << std::endl;
delete tree;
return 0;
}