#include <stdio.h>
#include "o.h"

NODE_T *new_tree( void *data_ptr, int dup_allowed )
{
    NODE_T  *tree;

    tree = (NODE_T *)o_malloc(sizeof(NODE_T));
    tree->data          = data_ptr;
    if ( dup_allowed ) {            /* Hide the duplicates allowed indicator */
        tree->balance = LEFT;       /* in the tree root's balance!           */
    } else {
        tree->balance = RIGHT;
    }
    tree->ptr   [LEFT ] = 0;        /* Hide the tree depth in left pointer */
    tree->ptr   [RIGHT] = (NODE_T *)tree;
    tree->thread[LEFT ] = TRUE;
    tree->thread[RIGHT] = TRUE;
    return( tree );
}

