Hi, my approach is quite similar to yours. I fixed bug of not claiming the operator function as a static one by comparing with yours. Could you(or anyone who knows) explain why should the operator function be static?
Basically, if you want to keep each BST node maintain one interval and keep each interval disjoint, it is not easy. Using interval trees, each node is still an interval, but 2 nodes can overlap. The insertion is then much easier. We defer the merging work when we need the final result.