summaryrefslogtreecommitdiff
path: root/src/02
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-08-05 21:14:54 -0600
committermo khan <mo.khan@gmail.com>2020-08-05 21:14:54 -0600
commit8d326c4d934ad821867af1497a14c6445cbe46fe (patch)
tree2598ac5599850283968858f7f53e77bea2f5ce39 /src/02
parent10ccd7ed1d4c5b058d67febc4d745c6c27d701ce (diff)
Flush out interface for caching traversal results
Diffstat (limited to 'src/02')
-rw-r--r--src/02/05/btree.c16
-rw-r--r--src/02/05/btree.h9
-rw-r--r--src/02/05/btree_test.c10
3 files changed, 32 insertions, 3 deletions
diff --git a/src/02/05/btree.c b/src/02/05/btree.c
index 7dea5b8..166e02c 100644
--- a/src/02/05/btree.c
+++ b/src/02/05/btree.c
@@ -22,6 +22,22 @@ BTree *btree_init(int data) {
return tree;
}
+void btree_pre_order_number(BTree *tree) {
+ //self
+ //left
+ //right
+}
+void btree_in_order_number(BTree *tree) {
+ // left
+ // self
+ // right
+}
+void btree_post_order_number(BTree *tree) {
+ // left
+ // right
+ // self
+}
+
BTree *btree_insert(BTree *tree, int data) {
if (!tree)
return btree_init(data);
diff --git a/src/02/05/btree.h b/src/02/05/btree.h
index ac0de3c..de43f96 100644
--- a/src/02/05/btree.h
+++ b/src/02/05/btree.h
@@ -4,12 +4,15 @@
typedef struct btree_node {
struct btree_node *left;
struct btree_node *right;
- int *in_order;
- int *post_order;
- int *pre_order;
+ int pre_order[32];
+ int in_order[32];
+ int post_order[32];
int data;
} BTree;
BTree *btree_init(int data);
BTree *btree_insert(BTree *root, int data);
+void btree_in_order_number(BTree *tree);
void btree_inspect(BTree *tree);
+void btree_post_order_number(BTree *tree);
+void btree_pre_order_number(BTree *tree);
diff --git a/src/02/05/btree_test.c b/src/02/05/btree_test.c
index 70184a5..62e5dd4 100644
--- a/src/02/05/btree_test.c
+++ b/src/02/05/btree_test.c
@@ -13,6 +13,14 @@ Ensure(BinaryTree, when_the_tree_is_NULL) {
assert_that(tree->data, is_equal_to(10));
}
+Ensure(BinaryTree, when_the_tree_has_a_single_node_it_returns_the_items_in_order) {
+ BTree *tree = btree_insert(NULL, 10);
+
+ btree_in_order_number(tree);
+
+ assert_that(tree->in_order[0], is_equal_to(10));
+}
+
Ensure(
BinaryTree,
when_inserting_an_item_less_than_the_root_in_a_tree_it_creates_a_node_on_the_left_side) {
@@ -93,6 +101,8 @@ Ensure(
TestSuite *btree_tests() {
TestSuite *suite = create_test_suite();
add_test_with_context(suite, BinaryTree, when_the_tree_is_NULL);
+ add_test_with_context(suite, BinaryTree, when_the_tree_has_a_single_node_it_returns_the_items_in_order);
+
add_test_with_context(
suite, BinaryTree,
when_inserting_an_item_less_than_the_root_in_a_tree_it_creates_a_node_on_the_left_side);