summaryrefslogtreecommitdiff
path: root/src/02/01/binary_tree.c
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-07-11 16:43:04 -0600
committermo khan <mo.khan@gmail.com>2020-07-11 16:43:04 -0600
commit705dc38744938c0e5eff0d6b9276c67da3a3b966 (patch)
tree4b4bde18adde1cc011b62c7fed9bfdf426afefba /src/02/01/binary_tree.c
parent1efedbdd9f040810ebe7ff63f736e863c36ac82a (diff)
Complete preorder traversal of a binary tree
Diffstat (limited to 'src/02/01/binary_tree.c')
-rw-r--r--src/02/01/binary_tree.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/02/01/binary_tree.c b/src/02/01/binary_tree.c
new file mode 100644
index 0000000..c0f3f09
--- /dev/null
+++ b/src/02/01/binary_tree.c
@@ -0,0 +1,23 @@
+#include "binary_tree.h"
+#include <stdlib.h>
+
+Node *initialize(int data) {
+ Node *item = malloc(sizeof(Node));
+ item->data = data;
+ item->left = NULL;
+ item->right = NULL;
+ return item;
+}
+
+void preorder_next(Node *node, Visitor visitor) {
+ if (!node)
+ return;
+
+ visitor(node);
+ preorder_next(node->left, visitor);
+ preorder_next(node->right, visitor);
+}
+
+void destroy(Node *head) {
+ free(head);
+}