@@ -21,12 +21,10 @@ export default class BinarySearchTree {
21
21
} else {
22
22
this . insertNode ( node . left , key ) ;
23
23
}
24
+ } else if ( node . right == null ) {
25
+ node . right = new Node ( key ) ;
24
26
} else {
25
- if ( node . right == null ) {
26
- node . right = new Node ( key ) ;
27
- } else {
28
- this . insertNode ( node . right , key ) ;
29
- }
27
+ this . insertNode ( node . right , key ) ;
30
28
}
31
29
}
32
30
getRoot ( ) {
@@ -43,9 +41,8 @@ export default class BinarySearchTree {
43
41
return this . searchNode ( node . left , key ) ;
44
42
} else if ( this . compareFn ( key , node . key ) === Compare . BIGGER_THAN ) {
45
43
return this . searchNode ( node . right , key ) ;
46
- } else {
47
- return true ;
48
44
}
45
+ return true ;
49
46
}
50
47
inOrderTraverse ( callback ) {
51
48
this . inOrderTraverseNode ( this . root , callback ) ;
@@ -110,30 +107,29 @@ export default class BinarySearchTree {
110
107
} else if ( this . compareFn ( key , node . key ) === Compare . BIGGER_THAN ) {
111
108
node . right = this . removeNode ( node . right , key ) ;
112
109
return node ;
113
- } else {
114
- // key is equal to node.item
115
- // handle 3 special conditions
116
- // 1 - a leaf node
117
- // 2 - a node with only 1 child
118
- // 3 - a node with 2 children
119
- // case 1
120
- if ( node . left == null && node . right == null ) {
121
- node = null ;
122
- return node ;
123
- }
124
- // case 2
125
- if ( node . left == null ) {
126
- node = node . right ;
127
- return node ;
128
- } else if ( node . right == null ) {
129
- node = node . left ;
130
- return node ;
131
- }
132
- // case 3
133
- const aux = this . minNode ( node . right ) ;
134
- node . key = aux . key ;
135
- node . right = this . removeNode ( node . right , aux . key ) ;
110
+ }
111
+ // key is equal to node.item
112
+ // handle 3 special conditions
113
+ // 1 - a leaf node
114
+ // 2 - a node with only 1 child
115
+ // 3 - a node with 2 children
116
+ // case 1
117
+ if ( node . left == null && node . right == null ) {
118
+ node = null ;
119
+ return node ;
120
+ }
121
+ // case 2
122
+ if ( node . left == null ) {
123
+ node = node . right ;
124
+ return node ;
125
+ } else if ( node . right == null ) {
126
+ node = node . left ;
136
127
return node ;
137
128
}
129
+ // case 3
130
+ const aux = this . minNode ( node . right ) ;
131
+ node . key = aux . key ;
132
+ node . right = this . removeNode ( node . right , aux . key ) ;
133
+ return node ;
138
134
}
139
135
}
0 commit comments