#ifndef ITREE_H #define ITREE_H /* * Simple integer interval tree implementation * Author: Titouan Rigoudy */ struct itree { int i; int j; long v; struct itree *left; struct itree *right; }; // Describes the start or end of an interval struct ievent { int i; long v; // i.v for interval start, -i.v for interval end }; struct itree *itree_new(int i, int j, long v); void itree_free(struct itree *it); void itree_print(struct itree *it); void itree_add(struct itree *it, int i, int j, long v); // Flatten the tree into a list of events representing // interval start and end points int itree_flatten(struct itree *it, struct ievent **events); #endif