111
111
return heightHelper ( this . root ) ;
112
112
} ;
113
113
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
+
114
159
exports . Node = Node ;
115
160
exports . IntervalTree = IntervalTree ;
116
161
117
162
} ( typeof exports === 'undefined' ? window : exports ) ) ;
118
163
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