1
+ 'use strict' ;
2
+ class Node {
3
+ constructor ( data ) {
4
+ this . data = data ;
5
+ this . leftNode = this . rightNode = null ;
6
+ }
7
+ }
8
+ function sumOfAllParentsOfX ( root , x , sumObj ) {
9
+ if ( root == null ) return 0 ;
10
+ if ( root . leftNode == null || root . rightNode == null ) return 0 ;
11
+ if ( root . leftNode . data == x || root . rightNode . data == x ) sumObj . sum = sumObj . sum + root . data ;
12
+ sumOfAllParentsOfX ( root . leftNode , x , sumObj )
13
+ sumOfAllParentsOfX ( root . rightNode , x , sumObj )
14
+ }
15
+
16
+ //level - 1
17
+ let tree = new Node ( 1 ) ;
18
+
19
+ // level - 2
20
+ tree . leftNode = new Node ( 2 ) ;
21
+ tree . rightNode = new Node ( 5 ) ;
22
+
23
+ // level - 3
24
+ tree . leftNode . leftNode = new Node ( 4 ) ;
25
+ tree . leftNode . rightNode = new Node ( 5 ) ;
26
+
27
+ tree . rightNode . leftNode = new Node ( 6 ) ;
28
+ tree . rightNode . rightNode = new Node ( 7 ) ;
29
+
30
+ // level - 4
31
+ tree . leftNode . leftNode . leftNode = new Node ( 8 ) ;
32
+ tree . leftNode . leftNode . rightNode = new Node ( 9 ) ;
33
+
34
+ tree . leftNode . rightNode . leftNode = new Node ( 10 ) ;
35
+ tree . leftNode . rightNode . rightNode = new Node ( 11 ) ;
36
+
37
+ tree . rightNode . leftNode . leftNode = new Node ( 12 ) ;
38
+ tree . rightNode . leftNode . rightNode = new Node ( 5 ) ;
39
+
40
+ tree . rightNode . rightNode . leftNode = new Node ( 14 ) ;
41
+ tree . rightNode . rightNode . rightNode = new Node ( 5 ) ;
42
+ // 1
43
+ // / \
44
+ // 2 5
45
+ // / \ / \
46
+ // 4 5 6 7
47
+ // / \ / \ / \ / \
48
+ // 8 9 10 11 12 5 14 5
49
+ let sumObj = { sum : 0 } ;
50
+ sumOfAllParentsOfX ( tree , 5 , sumObj )
51
+ console . log ( 'Sum Of All Parents ' , sumObj . sum ) ;
0 commit comments