Commit 74a52d2
Changed files (3)
src
src/03/avl_tree.c
@@ -0,0 +1,26 @@
+#include "avl_tree.h"
+#include <stdlib.h>
+
+AVLNode *avl_node_init(int value) {
+ AVLNode *node = malloc(sizeof(AVLNode));
+ node->left = NULL;
+ node->right = NULL;
+ node->value = value;
+ return node;
+}
+
+AVLTree *avl_tree_init() {
+ AVLTree *tree = malloc(sizeof(AVLTree));
+ return tree;
+}
+
+int avl_tree_size(AVLTree *tree) {
+ if (tree->root)
+ return 1;
+ else
+ return 0;
+}
+
+void avl_tree_insert(AVLTree *tree, int value) {
+ tree->root = avl_node_init(value);
+}
src/03/avl_tree.h
@@ -0,0 +1,13 @@
+typedef struct node {
+ struct node *left;
+ struct node *right;
+ int value;
+} AVLNode;
+
+typedef struct {
+ AVLNode *root;
+} AVLTree;
+
+AVLTree *avl_tree_init(void);
+int avl_tree_size(AVLTree *tree);
+void avl_tree_insert(AVLTree *tree, int value);
src/03/avl_tree_test.c
@@ -3,12 +3,28 @@
#include <string.h>
Ensure(initialize_returns_new_tree) {
- assert_that(NULL, is_equal_to(NULL));
+ AVLTree *tree = avl_tree_init();
+ assert_that(tree, is_not_equal_to(NULL));
+}
+
+Ensure(size_returns_zero) {
+ AVLTree *tree = avl_tree_init();
+
+ assert_that(avl_tree_size(tree), is_equal_to(0));
+}
+
+Ensure(insert_changes_size) {
+ AVLTree *tree = avl_tree_init();
+ avl_tree_insert(tree, 33);
+
+ assert_that(avl_tree_size(tree), is_equal_to(1));
}
TestSuite *avl_tree_tests() {
TestSuite *suite = create_test_suite();
add_test(suite, initialize_returns_new_tree);
+ add_test(suite, size_returns_zero);
+ add_test(suite, insert_changes_size);
return suite;
}