Listing 1: Pseudo-code for iterator traversal operations

struct Node {
    Node *left;
    Node *right;
    DataType data;
};

void Preorder(Node *ptr) 
{
    if (ptr != NULL) 
    {
        Process(ptr->data);
        Preorder(ptr->left);
        Preorder(ptr->right);
    }
}

void Inorder(Node *ptr) 
{
    if (ptr != NULL) 
    {
        Inorder(ptr->left);
        Process(ptr->data);
        Inorder(ptr->right);
    }
}

void Postorder(Node *ptr) 
{
    if (ptr != NULL) 
    {
        Postorder(ptr->left);
        Postorder(ptr->right);
        Process(ptr->data);
    }
}

/* End of File */