master
1/**
2 * A struct to represent a node in a Binary Tree
3 */
4struct node {
5 int data;
6 struct node *left;
7 struct node *right;
8};
9
10typedef struct node Node;
11
12/**
13 * A signature of a function pointer
14 * that can be used to traverse a binary tree.
15 */
16typedef void(Visitor)(Node* node);
17
18/**
19 * The different types of traversals that the binary tree can perform
20 */
21enum Traversal {
22 INORDER = 1, // In order traversal
23 PREORDER = 2, // Pre order traversal
24 POSTORDER = 4 // Post order traversal
25};
26
27Node *initialize(int data);
28void traverse(Node *node, Visitor visitor, enum Traversal traversal);
29void destroy(Node *head);
30void inspect(Node *head, int level);