示例#1
0
 public static bool DoOverlap(IntervalTree <T> parentNode, IntervalTree <T> interval)
 {
     if (IntervalTree <T> .Compare(interval.High, parentNode.Low) >= 0 && IntervalTree <T> .Compare(parentNode.High, interval.Low) >= 0)
     {
         return(true);
     }
     return(false);
 }
示例#2
0
 public static bool operator ==(IntervalTree <T> leftOperand, IntervalTree <T> rightOperand)
 {
     if (leftOperand is null && rightOperand is null)
     {
         return(true);
     }
     if (leftOperand is null || rightOperand is null)
     {
         return(false);
     }
     return(IntervalTree <T> .Compare(leftOperand.Low, rightOperand.Low) == 0 && IntervalTree <T> .Compare(leftOperand.High, rightOperand.High) == 0);
 }
示例#3
0
 public static bool operator <=(IntervalTree <T> leftOperand, IntervalTree <T> rightOperand)
 {
     if (leftOperand is null)
     {
         throw new ArgumentNullException(nameof(leftOperand));
     }
     if (rightOperand is null)
     {
         throw new ArgumentNullException(nameof(rightOperand));
     }
     return(IntervalTree <T> .Compare(leftOperand.Low, rightOperand.Low) <= 0);
 }
示例#4
0
 public static IntervalTree <T> Insert(IntervalTree <T> parentNode, IntervalTree <T> interval)
 {
     if (parentNode == null)
     {
         return(interval);
     }
     if (parentNode > interval)
     {
         parentNode.Left = Insert(parentNode.Left, interval);
     }
     else
     {
         parentNode.Right = Insert(parentNode.Right, interval);
     }
     return(parentNode);
 }
示例#5
0
 public static IntervalTree <T> Search(IntervalTree <T> parentNode, IntervalTree <T> interval)
 {
     if (parentNode == null)
     {
         return(null);
     }
     if (DoOverlap(parentNode, interval))
     {
         return(parentNode);
     }
     if (IntervalTree <T> .Compare(parentNode.Low, interval.High) >= 0)
     {
         return(Search(parentNode.Left, interval));
     }
     else
     {
         return(Search(parentNode.Right, interval));
     }
 }
示例#6
0
 public static IntervalTree <T> Insert(IntervalTree <T> parentNode, T low, T high)
 {
     return(Insert(parentNode, new IntervalTree <T>(low, high)));
 }
示例#7
0
 public static bool Equals(IntervalTree <T> leftOperand, IntervalTree <T> righOperand)
 {
     return(leftOperand == righOperand);
 }