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