diff options
| author | mo khan <mo.khan@gmail.com> | 2020-07-11 17:03:13 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-07-11 17:03:13 -0600 |
| commit | 23b4a81bb267e486c7bd1d594c400928af8729c8 (patch) | |
| tree | e8cbc2970734f293fbf6cd70b23965059ea8708e /src/02/01/binary_tree_test.c | |
| parent | 01080bad55e3d7ae47c6b1df64c48496b32ba544 (diff) | |
Implement recursive inorder traversal of binary tree
Diffstat (limited to 'src/02/01/binary_tree_test.c')
| -rw-r--r-- | src/02/01/binary_tree_test.c | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/02/01/binary_tree_test.c b/src/02/01/binary_tree_test.c index 554f322..4804d76 100644 --- a/src/02/01/binary_tree_test.c +++ b/src/02/01/binary_tree_test.c @@ -163,6 +163,79 @@ Ensure(BinaryTree, when_traversing_in_postorder_when_the_tree_has_multiple_level destroy(node); } +Ensure(BinaryTree, when_traversing_inorder_when_the_tree_is_empty) { + inorder_traversal(NULL, visitor); + + assert_that(visited_count, is_equal_to(0)); +} + +Ensure(BinaryTree, when_traversing_inorder_when_the_tree_has_a_single_node) { + Node *node = initialize(100); + + inorder_traversal(node, visitor); + + assert_that(visited_count, is_equal_to(1)); + assert_that(visited[0], is_equal_to(100)); + destroy(node); +} + +Ensure(BinaryTree, when_traversing_inorder_when_the_tree_has_a_left_node) { + Node *node = initialize(100); + node->left = initialize(200); + + inorder_traversal(node, visitor); + + assert_that(visited_count, is_equal_to(2)); + assert_that(visited[0], is_equal_to(200)); + assert_that(visited[1], is_equal_to(100)); + destroy(node); +} + +Ensure(BinaryTree, when_traversing_inorder_when_the_tree_has_a_right_node) { + Node *node = initialize(100); + node->right = initialize(300); + + inorder_traversal(node, visitor); + + assert_that(visited_count, is_equal_to(2)); + assert_that(visited[0], is_equal_to(100)); + assert_that(visited[1], is_equal_to(300)); + destroy(node); +} + +Ensure(BinaryTree, when_traversing_inorder_when_the_tree_has_a_left_and_right_node) { + Node *node = initialize(100); + node->left = initialize(200); + node->right = initialize(300); + + inorder_traversal(node, visitor); + + assert_that(visited_count, is_equal_to(3)); + assert_that(visited[0], is_equal_to(200)); + assert_that(visited[1], is_equal_to(100)); + assert_that(visited[2], is_equal_to(300)); + destroy(node); +} + +Ensure(BinaryTree, when_traversing_inorder_when_the_tree_has_multiple_levels) { + Node *node = initialize(100); + node->left = initialize(200); + node->right = initialize(300); + + node->left->left = initialize(400); + node->left->right = initialize(500); + + inorder_traversal(node, visitor); + + assert_that(visited_count, is_equal_to(5)); + assert_that(visited[0], is_equal_to(400)); + assert_that(visited[1], is_equal_to(200)); + assert_that(visited[2], is_equal_to(500)); + assert_that(visited[3], is_equal_to(100)); + assert_that(visited[4], is_equal_to(300)); + destroy(node); +} + TestSuite *binary_tree_tests() { TestSuite *suite = create_test_suite(); @@ -180,6 +253,13 @@ TestSuite *binary_tree_tests() { add_test_with_context(suite, BinaryTree, when_traversing_in_postorder_when_the_tree_has_a_left_and_right_node); add_test_with_context(suite, BinaryTree, when_traversing_in_postorder_when_the_tree_has_multiple_levels); + add_test_with_context(suite, BinaryTree, when_traversing_inorder_when_the_tree_is_empty); + add_test_with_context(suite, BinaryTree, when_traversing_inorder_when_the_tree_has_a_single_node); + add_test_with_context(suite, BinaryTree, when_traversing_inorder_when_the_tree_has_a_left_node); + add_test_with_context(suite, BinaryTree, when_traversing_inorder_when_the_tree_has_a_right_node); + add_test_with_context(suite, BinaryTree, when_traversing_inorder_when_the_tree_has_a_left_and_right_node); + add_test_with_context(suite, BinaryTree, when_traversing_inorder_when_the_tree_has_multiple_levels); + return suite; } |
