Пример #1
0
        public IntervalTreeNode GetOverlappingInterval(IntervalTreeNode intervalTreeNode, Interval interval)
        {
            if (intervalTreeNode == null)
            {
                return(null);
            }

            //If the interval is outright overlapping with root
            if (interval.Overlapping(intervalTreeNode.GetIntervalNodeInterval(), interval))
            {
                return(intervalTreeNode);
            }

            if (intervalTreeNode.GetIntervalTreeNodeLeft() != null &&
                intervalTreeNode.GetIntervalTreeNodeLeft().
                GetIntervalMaxLimit() >= interval.GetIntervalStartPosition())
            {
                return(GetOverlappingInterval(
                           intervalTreeNode.GetIntervalTreeNodeLeft(), interval));
            }

            return(GetOverlappingInterval(intervalTreeNode.GetIntervalTreeNodeRight(), interval));
        }
Пример #2
0
 public void SetIntervalTreeNodeRight(IntervalTreeNode intervalTreeNode)
 {
     rightIntervalTreeNode = intervalTreeNode;
 }
Пример #3
0
 public void SetIntervalTreeNodeLeft(IntervalTreeNode intervalTreeNode)
 {
     leftIntervalTreeNode = intervalTreeNode;
 }
Пример #4
0
 public void SetIntervalTreeRoot(IntervalTreeNode intervalTreeNode)
 {
     root = intervalTreeNode;
 }
Пример #5
0
 public IntervalTree(IntervalTreeNode intervalTreeNode)
 {
     root = intervalTreeNode;
 }