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);