MENG2010/java-algorithms-implementation

An Interval Tree query on range is not guaranteed to return all matches

Closed this issue · 3 comments

What steps will reproduce the problem?
        long f = 5;
        long a = 10;
        long c = 30;
        long g = 35;
        long d = 40;
        long b = 45;
        long e = 50;
        IntervalTree.IntervalData<String>  intervalEF = new IntervalTree.IntervalData(f, e, "Interval FE");
        IntervalTree.IntervalData<String>  intervalCG = new IntervalTree.IntervalData(c, g, "Interval CG");
        IntervalTree.IntervalData<String>  intervalCD = new IntervalTree.IntervalData(c, d, "Interval CD");
        IntervalTree.IntervalData<String>  intervalDE = new IntervalTree.IntervalData(d, e, "Interval DE");

        List<IntervalTree.IntervalData<String>> intervals = new ArrayList<>();
        intervals.add(intervalEF);
        intervals.add(intervalCG);
        intervals.add(intervalCD);
        intervals.add(intervalDE);

        IntervalTree<String> tree = new IntervalTree(intervals);

        IntervalTree.IntervalData<String> abquery = tree.query(a, b);

What is the expected output? What do you see instead?

abquery should contain all intervals within the tree but instead it does not 
contain intervalCD. 

What version of the product are you using? On what operating system?
I am using the code from November 11, 2013 on Windows. 

Please provide any additional information below.

Original issue reported on code.google.com by mareija....@visiercorp.com on 14 Nov 2013 at 9:50

Sorry, it was a problem in the comparator being used. It assumed if the start 
was equal then the interval was equal. I've updated the code; update to the 
latest and let me know if you have any more problems.

Original comment by phishman3579@gmail.com on 14 Nov 2013 at 10:18

Original comment by phishman3579@gmail.com on 14 Nov 2013 at 10:19

  • Changed state: Fixed
revision 436

Original comment by phishman3579@gmail.com on 14 Nov 2013 at 10:25