From 8d326c4d934ad821867af1497a14c6445cbe46fe Mon Sep 17 00:00:00 2001 From: mo khan Date: Wed, 5 Aug 2020 21:14:54 -0600 Subject: Flush out interface for caching traversal results --- src/02/05/btree.c | 16 ++++++++++++++++ src/02/05/btree.h | 9 ++++++--- src/02/05/btree_test.c | 10 ++++++++++ 3 files changed, 32 insertions(+), 3 deletions(-) (limited to 'src/02') 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); -- cgit v1.2.3