diff options
| author | mo khan <mo.khan@gmail.com> | 2020-08-04 19:58:26 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-08-04 19:58:37 -0600 |
| commit | 6dd72268c1fae4f56b95f9a405eadcb5259e5686 (patch) | |
| tree | da8e0fb9af57a21ebf3c5a346c7c51bc34895503 /src/02 | |
| parent | 08d2c8d0264219ee020824534a33bfda1e288a43 (diff) | |
Print out binary tree
Diffstat (limited to 'src/02')
| -rw-r--r-- | src/02/01/binary_tree.c | 12 | ||||
| -rw-r--r-- | src/02/01/binary_tree.h | 1 | ||||
| -rw-r--r-- | src/02/01/binary_tree_test.c | 1 | ||||
| -rw-r--r-- | src/02/01/main.c | 33 |
4 files changed, 45 insertions, 2 deletions
diff --git a/src/02/01/binary_tree.c b/src/02/01/binary_tree.c index 0d68a90..cc3e666 100644 --- a/src/02/01/binary_tree.c +++ b/src/02/01/binary_tree.c @@ -1,4 +1,5 @@ #include "binary_tree.h" +#include <stdio.h> #include <stdlib.h> Node *initialize(int data) { @@ -38,3 +39,14 @@ void traverse(Node *node, Visitor visitor, enum Traversal traversal) { static void destructor(Node *node) { free(node); } void destroy(Node *head) { traverse(head, destructor, POSTORDER); } + +void inspect(Node *node, int level) { + if (!node) + return; + + for (int i = 0; i < level; i++) + printf(" "); + printf("(%d)\n", node->data); + inspect(node->left, level + 1); + inspect(node->right, level + 1); +} diff --git a/src/02/01/binary_tree.h b/src/02/01/binary_tree.h index 93a6f12..e30b71a 100644 --- a/src/02/01/binary_tree.h +++ b/src/02/01/binary_tree.h @@ -11,3 +11,4 @@ enum Traversal { INORDER = 1, PREORDER = 2, POSTORDER = 4 }; Node *initialize(int data); void traverse(Node *node, Visitor visitor, enum Traversal traversal); void destroy(Node *head); +void inspect(Node *head, int level); diff --git a/src/02/01/binary_tree_test.c b/src/02/01/binary_tree_test.c index 384b4fb..cf19b97 100644 --- a/src/02/01/binary_tree_test.c +++ b/src/02/01/binary_tree_test.c @@ -331,7 +331,6 @@ Ensure(BinaryTree, when_finding_the_next_node_in_a_postorder_traversal) { destroy(a); } - TestSuite *binary_tree_tests() { TestSuite *suite = create_test_suite(); diff --git a/src/02/01/main.c b/src/02/01/main.c index a16f695..81bbf2f 100644 --- a/src/02/01/main.c +++ b/src/02/01/main.c @@ -1,9 +1,40 @@ #include "binary_tree.h" #include <stdio.h> #include <stdlib.h> +#include <string.h> + +static Node *nodes[32]; +static int visited_count; + +static void visitor(Node *node) { + nodes[visited_count] = node; + visited_count++; +} int main(int argc, char *argv[]) { printf("=== COMP-272 - Assignment 02 - Question 01 ===\n"); - printf("Bye\n"); + + Node *a = initialize(100); + Node *b = initialize(200); + Node *c = initialize(300); + Node *d = initialize(400); + Node *e = initialize(500); + + a->left = b; + a->right = c; + b->left = d; + b->right = e; + inspect(a, 0); + + printf("\n=== Preorder traversal ===\n"); + int visited_count = 0; + memset(nodes, 0, sizeof(nodes)); + + traverse(a, visitor, PREORDER); + + for (int i = 0; i < visited_count; i++) { + printf("%d", nodes[i]->data); + } + return 0; } |
