1
+ 'use strict' ;
2
+ class Node {
3
+ constructor ( data ) {
4
+ this . data = data ;
5
+ this . leftNode = this . rightNode = null ;
6
+ }
7
+ }
8
+ function longestPathSum ( root , sum , length , longestSumObj , longestLengthObj ) {
9
+ if ( root == null ) return ;
10
+ sum = sum + root . data ;
11
+ length ++ ;
12
+ if ( root . leftNode == null && root . rightNode == null ) {
13
+ if ( length >= longestLengthObj . pathLength ) {
14
+ longestSumObj . pathSum = sum ;
15
+ longestLengthObj . pathLength = length ;
16
+ }
17
+ }
18
+ longestPathSum ( root . leftNode , sum , length , longestSumObj , longestLengthObj ) ;
19
+ longestPathSum ( root . rightNode , sum , length , longestSumObj , longestLengthObj ) ;
20
+ }
21
+
22
+ //level - 1
23
+ let tree = new Node ( 1 ) ;
24
+
25
+ // level - 2
26
+ tree . leftNode = new Node ( 2 ) ;
27
+ tree . rightNode = new Node ( 3 ) ;
28
+
29
+ // level -3
30
+ tree . leftNode . leftNode = new Node ( 4 ) ;
31
+ tree . leftNode . rightNode = new Node ( 5 ) ;
32
+
33
+ tree . rightNode . leftNode = new Node ( 6 ) ;
34
+ tree . rightNode . rightNode = new Node ( 7 ) ;
35
+
36
+ // level -4
37
+ tree . leftNode . leftNode . leftNode = new Node ( 8 ) ;
38
+ tree . leftNode . leftNode . rightNode = new Node ( 9 ) ;
39
+
40
+ tree . leftNode . rightNode . leftNode = new Node ( 10 ) ;
41
+ tree . leftNode . rightNode . rightNode = new Node ( 11 ) ;
42
+
43
+ tree . rightNode . leftNode . leftNode = new Node ( 12 ) ;
44
+ tree . rightNode . leftNode . rightNode = new Node ( 13 ) ;
45
+
46
+ tree . rightNode . rightNode . leftNode = new Node ( 14 ) ;
47
+ tree . rightNode . rightNode . rightNode = new Node ( 15 ) ;
48
+
49
+ tree . rightNode . rightNode . rightNode . leftNode = new Node ( 21 ) ;
50
+
51
+ tree . leftNode . leftNode . rightNode . leftNode = new Node ( 4 ) ;
52
+ tree . leftNode . leftNode . rightNode . leftNode . leftNode = new Node ( 2 ) ;
53
+
54
+ // 1
55
+ // / \
56
+ // 2 3
57
+ // / \ / \
58
+ // 4 5 6 7
59
+ // / \ / \ / \ / \
60
+ // 8 9 10 11 12 13 14 15
61
+ // / /
62
+ // 4 21
63
+ // \
64
+ // 2
65
+ let longestSumObj = { pathSum : 0 } ;
66
+ let longestLengthObj = { pathLength : 0 } ;
67
+ longestPathSum ( tree , 0 , 0 , longestSumObj , longestLengthObj ) ;
68
+ console . log ( 'Longest path sum is ->' , longestSumObj . pathSum )
69
+ console . log ( 'Longest path length is ->' , longestLengthObj . pathLength )
0 commit comments