Example #1
0
int main(int argc, const char * argv[]) {
    INT_TREE tree = (INT_TREE) malloc(sizeof(struct int_tree));
    srand((unsigned)time(NULL));
    for(int i = 0; i < 10; i++)
    {
        int low = rand() % 30;
        int high = rand() % 30;
        if(low > high)
        {
            int tmp = low;
            low = high;
            high = tmp;
        }
        INT_NODE node = int_new_node(low, high);
        interval_insert(tree, node);
    }
    print_interval_tree(tree, tree -> root);
    INT i = (INT) malloc(sizeof(struct interval));
    i -> high = 18;
    i -> low = 15;
    INT_NODE node = interval_search(tree, i);
    printf("selected interval is: [%d, %d], max: %d, color %s", node -> interval -> low, node -> interval -> high, node -> max , node -> color == RED?"red":"black");
    printf("\n");
    
    return 0;
}
Example #2
0
/*
 * insert an nid range into the interval tree
 *
 * \param	range		range to insetr
 * \retval	0 on success
 *
 * This function checks that the given nid range
 * does not overlap so that each nid can belong
 * to exactly one range
 */
int range_insert(struct lu_nid_range *range)
{
	struct interval_node_extent ext =
			range->rn_node.in_extent;

	if (interval_is_overlapped(range_interval_root, &ext) != 0)
		return -EEXIST;

	interval_insert(&range->rn_node, &range_interval_root);

	return 0;
}