1
+ 'use strict' ;
2
+ class Node {
3
+ constructor ( data ) {
4
+ this . data = data ;
5
+ this . leftNode = this . rightNode = null ;
6
+ }
7
+ }
8
+ function levelOrderTraversalWithDirection ( root ) {
9
+ if ( root == null ) return ;
10
+ let stack = [ ] ;
11
+ stack . push ( root ) ;
12
+ let queue = [ ] ;
13
+ let count = 1 ;
14
+ while ( stack . length != 0 ) {
15
+ let levelElements = '' ;
16
+ while ( stack . length != 0 ) {
17
+ let temp = stack . pop ( ) ;
18
+ if ( count == 1 ) {
19
+ if ( temp . leftNode ) queue . push ( temp . leftNode ) ;
20
+ if ( temp . rightNode ) queue . push ( temp . rightNode ) ;
21
+ } else if ( count == 2 ) {
22
+ if ( temp . rightNode ) queue . push ( temp . rightNode ) ;
23
+ if ( temp . leftNode ) queue . push ( temp . leftNode ) ;
24
+ }
25
+ levelElements = levelElements + temp . data + ' ' ;
26
+ }
27
+ console . log ( levelElements ) ;
28
+ levelElements = '' ;
29
+ while ( queue . length != 0 ) {
30
+ let temp = queue . shift ( ) ;
31
+ if ( count == 1 ) {
32
+ if ( temp . leftNode ) stack . push ( temp . leftNode ) ;
33
+ if ( temp . rightNode ) stack . push ( temp . rightNode ) ;
34
+ } else {
35
+ if ( temp . rightNode ) stack . push ( temp . rightNode ) ;
36
+ if ( temp . leftNode ) stack . push ( temp . leftNode ) ;
37
+ }
38
+ levelElements = levelElements + temp . data + ' ' ;
39
+ }
40
+ console . log ( levelElements ) ;
41
+ if ( count == 2 ) count = 0 ;
42
+ count ++ ;
43
+ }
44
+ }
45
+ //level - 1
46
+ let tree = new Node ( 1 ) ;
47
+
48
+ // level - 2
49
+ tree . leftNode = new Node ( 2 ) ;
50
+ tree . rightNode = new Node ( 3 ) ;
51
+
52
+ // level -3
53
+ tree . leftNode . leftNode = new Node ( 4 ) ;
54
+ tree . leftNode . rightNode = new Node ( 5 ) ;
55
+
56
+ tree . rightNode . leftNode = new Node ( 6 ) ;
57
+ tree . rightNode . rightNode = new Node ( 7 ) ;
58
+
59
+ // level -4
60
+ tree . leftNode . leftNode . leftNode = new Node ( 8 ) ;
61
+ tree . leftNode . leftNode . rightNode = new Node ( 9 ) ;
62
+
63
+ tree . leftNode . rightNode . leftNode = new Node ( 10 ) ;
64
+ tree . leftNode . rightNode . rightNode = new Node ( 11 ) ;
65
+
66
+ tree . rightNode . leftNode . leftNode = new Node ( 12 ) ;
67
+ tree . rightNode . leftNode . rightNode = new Node ( 13 ) ;
68
+
69
+ tree . rightNode . rightNode . leftNode = new Node ( 14 ) ;
70
+ tree . rightNode . rightNode . rightNode = new Node ( 15 ) ;
71
+
72
+ levelOrderTraversalWithDirection ( tree ) ;
0 commit comments