111111 return heightHelper ( this . root ) ;
112112 } ;
113113
114+ // adjust the max value
115+ IntervalTree . prototype . removeHelper = function ( interval , node ) {
116+ if ( ! node ) {
117+ return ;
118+ }
119+ if ( node . interval [ 0 ] === interval [ 0 ] &&
120+ node . interval [ 1 ] === interval [ 1 ] ) {
121+ if ( node . left && node . right ) {
122+ var replacement = node . left ;
123+ while ( replacement . left ) {
124+ replacement = replacement . left ;
125+ }
126+ var temp = replacement . interval ;
127+ replacement . interval = node . interval ;
128+ node . interval = temp ;
129+ this . _removeHelper ( replacement . interval , node ) ;
130+ } else {
131+ var side = 'left' ;
132+ if ( node . right ) {
133+ side = 'right' ;
134+ }
135+ var parentNode = node . parentNode ;
136+ if ( parentNode ) {
137+ if ( parentNode . left === node ) {
138+ parentNode . left = node [ side ] ;
139+ } else {
140+ parentNode . right = node [ side ] ;
141+ }
142+ node [ side ] . parentNode = parentNode ;
143+ } else {
144+ this . root = node [ side ] ;
145+ this . root . parentNode = null ;
146+ }
147+ }
148+ } else {
149+ // could be optimized
150+ this . _removeHelper ( interval , node . left ) ;
151+ this . _removeHelper ( interval , node . right ) ;
152+ }
153+ } ;
154+
155+ IntervalTree . prototype . remove = function ( interval ) {
156+ return this . _removeHelper ( interval , this . root ) ;
157+ } ;
158+
114159 exports . Node = Node ;
115160 exports . IntervalTree = IntervalTree ;
116161
117162} ( typeof exports === 'undefined' ? window : exports ) ) ;
118163
119- //
120- // var t = new IntervalTree();
121- //
122- // t.add([1, 2]);
123- // t.add([-1, 8]);
124- // t.add([-1, 18]);
125- // t.add([2, 4]);
126- // t.add([8, 13]);
127- // t.add([2, 10]);
128- //
129- // console.log(t.intersects([19, 29]));
130- // console.log(t.contains(16));
131- // console.log(t.height());
164+ var IntervalTree = exports . IntervalTree ;
165+
166+ var t = new IntervalTree ( ) ;
167+
168+ t . add ( [ 1 , 2 ] ) ;
169+ t . add ( [ - 1 , 8 ] ) ;
170+ t . add ( [ - 1 , 18 ] ) ;
171+ t . add ( [ 2 , 4 ] ) ;
172+ t . add ( [ 8 , 13 ] ) ;
173+ t . add ( [ 2 , 10 ] ) ;
174+
175+ console . log ( t . intersects ( [ 19 , 29 ] ) ) ;
176+ console . log ( t . contains ( 16 ) ) ;
177+ console . log ( t . height ( ) ) ;
0 commit comments