Exemplo n.º 1
0
static void* _postOrder(btree* node)
{
    if(node == NULL)
        return NULL;

    _postOrder(node->lbranch);
    _postOrder(node->rbranch);

    printf("Postorder payload [%c]\n", _getLetter(node->payload));

    return node;
}
Exemplo n.º 2
0
void TCGenBinaryTree::_postOrder(TCBinaryTreeNode* t)
/****************************************************************************
*
* Function:     TCGenBinaryTree::_postOrder
* Parameters:   t   - Root of subtree to perform traversal on
*
* Description:  Recursive routine to perform a post-order traversal on the
*               subtree.
*
****************************************************************************/
{
    if (t != o_z) {
        _postOrder(t->left);
        _postOrder(t->right);
        o_visit(t);
        }
}
Exemplo n.º 3
0
void TCGenBinaryTree::postOrder(void (*visit)(TCBinaryTreeNode*)) const
/****************************************************************************
*
* Function:     TCGenBinaryTree::postOrder
* Parameters:   visit   - Function to call for each node visited
*
****************************************************************************/
{
    o_z = z;
    o_visit = visit;
    _postOrder(root->right);
}
Exemplo n.º 4
0
void CleanUpBinaryTree()
{
    btree* nodeToDelete = NULL;

    if(GetRoot() == NULL)
        return;

    while(GetRoot() != NULL)
    {
        nodeToDelete = (btree *) _postOrder(GetRoot());

        printf("Freeing node [%c]\n", _getLetter(nodeToDelete->payload));

        SetRoot(DeleteBinaryTreeNode(GetRoot(), _getLetter(nodeToDelete->payload)));
    }
}
Exemplo n.º 5
0
void DisplayOrder(enum SearchType sType)
{
    switch(sType)
    {
        case PREORDER:
            _preOrder(GetRoot());
            break;
        case INORDER:
            _inOrder(GetRoot());
            break;
        case POSTORDER:
            _postOrder(GetRoot());
            break;
        default:
            break;
    }
}