fix(tree): working balanced remove
All checks were successful
ci/woodpecker/pr/lint Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/test-mem Pipeline was successful

This commit is contained in:
Jef Roosens 2023-02-01 23:04:35 +01:00
parent 70217bee21
commit bee520a781
Signed by: Jef Roosens
GPG key ID: B75D4F293C7052DB
7 changed files with 102 additions and 18 deletions

View file

@ -3,6 +3,9 @@
#include "vieter_tree_node.h"
#include "vieter_tree_balancing.h"
// This uses the examples from wikipedia
// https://en.wikipedia.org/wiki/Tree_rotation
void test_rotate_right() {
vieter_tree_node *a = vieter_tree_node_init();
vieter_tree_node *b = vieter_tree_node_init();
@ -24,6 +27,12 @@ void test_rotate_right() {
TEST_CHECK(new_root->children[1] == q);
TEST_CHECK(new_root->children[1]->children[0] == b);
TEST_CHECK(new_root->children[1]->children[1] == c);
vieter_tree_node_free(a);
vieter_tree_node_free(b);
vieter_tree_node_free(p);
vieter_tree_node_free(c);
vieter_tree_node_free(q);
}
void test_rotate_left() {
@ -47,6 +56,12 @@ void test_rotate_left() {
TEST_CHECK(new_root->children[1] == c);
TEST_CHECK(new_root->children[0]->children[0] == a);
TEST_CHECK(new_root->children[0]->children[1] == b);
vieter_tree_node_free(a);
vieter_tree_node_free(b);
vieter_tree_node_free(p);
vieter_tree_node_free(c);
vieter_tree_node_free(q);
}
TEST_LIST = {

View file

@ -42,7 +42,7 @@ void test_remove() {
void *out;
for (uint64_t i = 0; i < 100; i++) {
for (uint64_t i = 0; i < 250; i++) {
TEST_CHECK(vieter_tree_search(&out, tree, i) == vieter_tree_ok);
TEST_CHECK(vieter_tree_remove(&out, tree, i) == vieter_tree_ok);
TEST_CHECK(vieter_tree_validate(tree));