#include "tree.h" // Function prototypes for helper functions void test_insert(Tree *tree); void test_remove(Tree *tree); void test_contains(Tree *tree); void test_inorder(Tree *tree); int main() { Tree tree = { .root = NULL }; printf("\n-- Testing Insert --\n"); test_insert(&tree); printf("\n-- Testing Contains --\n"); test_contains(&tree); printf("\n-- Testing Inorder Traversal --\n"); test_inorder(&tree); printf("\n-- Testing Remove --\n"); test_remove(&tree); printf("\n-- Clearing Tree --\n"); tree_clear(&tree); printf("Tree cleared.\n"); return 0; } void test_insert(Tree *tree) { int values[] = {10, 5, 15, 3, 7, 12, 18}; for (int i = 0; i < 7; i++) { printf("Inserting %d\n", values[i]); tree_insert(tree, values[i]); } } void test_remove(Tree *tree) { int values_to_remove[] = {15, 5, 10}; for (int i = 0; i < 3; i++) { printf("Removing %d\n", values_to_remove[i]); if (tree_remove(&tree->root, values_to_remove[i]) == 0) { printf("Successfully removed %d\n", values_to_remove[i]); } else { printf("Failed to remove %d\n", values_to_remove[i]); } } printf("Remaining elements (in-order traversal):\n"); tree_inorder(tree->root); printf("\n"); } void test_contains(Tree *tree) { int values_to_check[] = {7, 15, 20}; for (int i = 0; i < 3; i++) { printf("Checking if tree contains %d: %s\n", values_to_check[i], tree_contains(tree->root, values_to_check[i]) ? "Yes" : "No"); } } void test_inorder(Tree *tree) { printf("Tree elements (in-order traversal):\n"); tree_inorder(tree->root); printf("\n"); }