Fix interval tree

This commit is contained in:
Ilusha 2024-03-07 12:45:24 +03:00
parent 20ac8620e6
commit 23e7ecb812
2 changed files with 11 additions and 3 deletions

View file

@ -14,8 +14,16 @@ namespace tp {
mEnd = end; mEnd = end;
} }
inline bool descentRight(const IntervalKey& in) const { return in.mStart > mStart; } inline bool descentRight(const IntervalKey& in) const {
inline bool descentLeft(const IntervalKey& in) const { return in.mStart <= mStart; } if (in.mStart != mStart) return in.mStart > mStart;
return in.mEnd > mEnd;
}
inline bool descentLeft(const IntervalKey& in) const {
if (in.mStart != mStart) return in.mStart < mStart;
return in.mEnd < mEnd;
}
inline bool exactNode(const IntervalKey& in) const { return in.mStart == mStart && in.mEnd == mEnd; } inline bool exactNode(const IntervalKey& in) const { return in.mStart == mStart && in.mEnd == mEnd; }
inline const IntervalKey& getFindKey() const { return *this; } inline const IntervalKey& getFindKey() const { return *this; }

View file

@ -10,7 +10,7 @@ using namespace tp;
struct Interval { struct Interval {
[[nodiscard]] bool overlaps(const Interval& in) const { return in.start < end && in.end > start; } [[nodiscard]] bool overlaps(const Interval& in) const { return in.start <= end && in.end >= start; }
halnf start{}; halnf start{};
halnf end{}; halnf end{};