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