1
1
import BNode from './BinaryTreeNode.ts' ;
2
+ import Queue from '../Sequential/Queue.ts' ;
2
3
3
4
4
5
export default class BinarySearchTree {
@@ -205,6 +206,24 @@ export default class BinarySearchTree {
205
206
node . setRight ( left ) ;
206
207
}
207
208
209
+ public breadthFirstSearch ( ) {
210
+ if ( ! this . root ) return false ;
211
+
212
+ let currentNode = this . root ;
213
+ let nodesTraversed = new Array ( ) ;
214
+ const nodeQueue : Queue < BNode > = new Queue ( ) ;
215
+
216
+ nodeQueue . enqueue ( currentNode ) ;
217
+
218
+ while ( nodeQueue . getLength ( ) > 0 ) {
219
+ currentNode = nodeQueue . dequeue ( ) ;
220
+ nodesTraversed . push ( currentNode . getValue ( ) ) ;
221
+ if ( currentNode . hasLeft ( ) ) nodeQueue . enqueue ( currentNode . getLeft ( ) ) ;
222
+ if ( currentNode . hasRight ( ) ) nodeQueue . enqueue ( currentNode . getRight ( ) ) ;
223
+ }
224
+ return nodesTraversed ;
225
+ }
226
+
208
227
public equalsQuantum ( tree : BinarySearchTree ) : boolean {
209
228
return JSON . stringify ( this ) === JSON . stringify ( tree ) ;
210
229
}
@@ -233,7 +252,8 @@ if (import.meta.main) {
233
252
tree . insert ( 170 ) ;
234
253
tree . insert ( 15 ) ;
235
254
tree . insert ( 1 ) ;
236
- console . log ( 'Tree: ' , JSON . stringify ( BinarySearchTree . traverse ( tree . getRoot ( ) ) ) ) ;
255
+ console . log ( tree . breadthFirstSearch ( ) ) ;
256
+ // console.log('Tree: ', JSON.stringify(BinarySearchTree.traverse(tree.getRoot())));
237
257
tree . remove ( 20 ) ;
238
258
printNode ( tree , 4 ) ;
239
259
printNode ( tree , 17 ) ;
@@ -243,14 +263,21 @@ if (import.meta.main) {
243
263
tree . invertTree ( ) ;
244
264
console . log ( 'Inverse Tree: ' , JSON . stringify ( BinarySearchTree . traverse ( tree . getRoot ( ) ) ) ) ;
245
265
266
+ console . log ( tree . breadthFirstSearch ( ) ) ;
267
+
246
268
// RUN: deno run Data-Structures/Trees/BinarySearchTree.ts
247
269
}
248
270
249
271
// --------------------------- Terminal Output: ---------------------------
272
+ // [
273
+ // 9, 4, 20, 1,
274
+ // 6, 15, 170
275
+ // ]
250
276
// Tree: {"value":9,"left":{"value":4,"left":{"value":1,"left":null,"right":null},"right":{"value":6,"left":null,"right":null} },"right":{"value":20,"left":{"value":15,"left":null,"right":null},"right":{"value":170,"left":null,"right":null}} }
251
277
// Find 4: {"value":4,"left":{"value":1,"left":null,"right":null},"right":{"value":6,"left":null,"right":null}}
252
278
// Find 17: Node not found.
253
279
// Find 40: Node not found.
254
280
// Find 170: {"value":170,"left":{"value":15,"left":null,"right":null},"right":null}
255
281
// Original Tree: {"value":9,"left":{"value":4,"left":{"value":1,"left":null,"right":null},"right":{"value":6,"left":null,"right":null} },"right":{"value":170,"left":{"value":15,"left":null,"right":null},"right":null} }
256
- // Inverse Tree: {"value":9,"left":{"value":170,"left":null,"right":{"value":15,"left":null,"right":null}},"right":{"value":4,"left":{"value":6,"left":null,"right":null},"right":{"value":1,"left":null,"right":null}} }
282
+ // Inverse Tree: {"value":9,"left":{"value":170,"left":null,"right":{"value":15,"left":null,"right":null}},"right":{"value":4,"left":{"value":6,"left":null,"right":null},"right":{"value":1,"left":null,"right":null}} }
283
+ // [ 9, 170, 4, 15, 6, 1 ]
0 commit comments