File tree 1 file changed +14
-7
lines changed 1 file changed +14
-7
lines changed Original file line number Diff line number Diff line change @@ -35,8 +35,6 @@ bbtree.prototype = {
35
35
insert : function ( key ) {
36
36
37
37
var bottom = this . _bottom ,
38
- skew = this . _skew ,
39
- split = this . _split ,
40
38
compare = this . _compare ,
41
39
newNode = new Node ( key , bottom , bottom , 1 ) ;
42
40
@@ -64,8 +62,19 @@ bbtree.prototype = {
64
62
}
65
63
}
66
64
67
- for ( var i = path . length - 1 , current , parent , updated ; i >= 0 ; i -- ) {
68
- current = path [ i ] ;
65
+ this . _rebalance ( path ) ;
66
+
67
+ return this ;
68
+ } ,
69
+
70
+ _rebalance : function ( path ) {
71
+
72
+ var skew = this . _skew ,
73
+ split = this . _split ,
74
+ node , current , parent , updated ;
75
+
76
+ for ( var i = path . length - 1 ; i >= 0 ; i -- ) {
77
+ node = current = path [ i ] ;
69
78
updated = false ;
70
79
71
80
if ( current . level === current . left . level && current . level === current . right . level ) {
@@ -78,19 +87,17 @@ bbtree.prototype = {
78
87
}
79
88
80
89
if ( node !== current ) {
90
+ updated = true ;
81
91
if ( i ) {
82
92
parent = path [ i - 1 ] ;
83
93
if ( parent . left === current ) parent . left = node ;
84
94
else parent . right = node ;
85
95
86
96
} else this . root = node ;
87
- updated = true ;
88
97
}
89
98
90
99
if ( ! updated ) break ;
91
100
}
92
-
93
- return this ;
94
101
} ,
95
102
96
103
_skew : function ( node ) {
You can’t perform that action at this time.
0 commit comments