Commit 6dd7226

mo khan <mo.khan@gmail.com>
2020-08-05 01:58:26
Print out binary tree
1 parent 08d2c8d
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);
+}
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);
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();
 
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;
 }