File tree Expand file tree Collapse file tree 2 files changed +46
-0
lines changed Expand file tree Collapse file tree 2 files changed +46
-0
lines changed Original file line number Diff line number Diff line change 266
266
}
267
267
} ;
268
268
269
+ /**
270
+ * Get Level Order Traversal for the given Red Black Tree,
271
+ * returns 'Tree is empty' string when tree has no Nodes.
272
+ * Complexity: O(N).
273
+ *
274
+ * @public
275
+ * @return {String } The keys of the tree in level order traversal.
276
+ *
277
+ */
278
+ exports . RBTree . prototype . levelOrderTraversal = function ( ) {
279
+ var queue = [ ] ;
280
+ var levelOrderString = '' ;
281
+ if ( this . _root ) {
282
+ queue . push ( this . _root ) ;
283
+ } else {
284
+ levelOrderString = ' Tree is empty' ;
285
+ }
286
+ while ( queue . length !== 0 ) {
287
+ var tempNode = queue . shift ( ) ;
288
+ levelOrderString += ' ' + tempNode . getKey ( ) ;
289
+ if ( tempNode . getLeft ( ) !== null ) {
290
+ queue . push ( tempNode . getLeft ( ) ) ;
291
+ }
292
+ if ( tempNode . getRight ( ) !== null ) {
293
+ queue . push ( tempNode . getRight ( ) ) ;
294
+ }
295
+ }
296
+ return 'Level Order Traversal -:' + levelOrderString ;
297
+ } ;
298
+
269
299
} ) ( typeof window === 'undefined' ? module . exports : window ) ;
Original file line number Diff line number Diff line change @@ -97,4 +97,20 @@ describe('RBTree', function () {
97
97
} ) ;
98
98
} ) ;
99
99
100
+ describe ( 'levelOrderTraversal method' , function ( ) {
101
+ it ( 'should be able to traverse tree in level order' , function ( ) {
102
+ var tree = new RBTree ( ) ;
103
+ expect ( tree . levelOrderTraversal ( ) ) . toBe ( 'Level Order Traversal -: Tree is empty' ) ;
104
+ tree . put ( 10 ) ;
105
+ tree . put ( 20 ) ;
106
+ expect ( tree . levelOrderTraversal ( ) ) . toBe ( 'Level Order Traversal -: 20 10' ) ;
107
+ tree . put ( 30 ) ;
108
+ expect ( tree . levelOrderTraversal ( ) ) . toBe ( 'Level Order Traversal -: 20 10 30' ) ;
109
+ tree . put ( 45 ) ;
110
+ expect ( tree . levelOrderTraversal ( ) ) . toBe ( 'Level Order Traversal -: 20 10 45 30' ) ;
111
+ tree . put ( 5 ) ;
112
+ expect ( tree . levelOrderTraversal ( ) ) . toBe ( 'Level Order Traversal -: 20 10 45 5 30' ) ;
113
+ } ) ;
114
+ } ) ;
115
+
100
116
} ) ;
You can’t perform that action at this time.
0 commit comments