Exercise 12.1.4

Give recursive algorithms that perform preorder and postorder tree walks in $\Theta(n)$ time on a tree of $n$ nodes.

C code

struct tree_t {
    struct tree_t *left;
    struct tree_t *right;
    int key;
typedef struct tree_t tree_t;

typedef void callback_t(tree_t *node);

void preorder(tree_t *tree, callback_t *callback) {
    if (!tree) return;

    preorder(tree->left, callback);
    preorder(tree->right, callback);

void postorder(tree_t *tree, callback_t *callback) {
    if (!tree) return;

    postorder(tree->left, callback);
    postorder(tree->right, callback);