File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed
binary-tree-maximum-path-sum Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * Definition for a binary tree node.
3+ * class TreeNode {
4+ * val: number
5+ * left: TreeNode | null
6+ * right: TreeNode | null
7+ * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
8+ * this.val = (val===undefined ? 0 : val)
9+ * this.left = (left===undefined ? null : left)
10+ * this.right = (right===undefined ? null : right)
11+ * }
12+ * }
13+ */
14+
15+ // Time Complexity: O(n)
16+ // Space Complexity: O(h) where h is the height of the tree
17+ function maxPathSum ( root : TreeNode | null ) : number {
18+ let maximumSum = - Infinity ;
19+
20+ const dfs = ( node : TreeNode | null ) => {
21+ if ( ! node ) return 0 ;
22+
23+ let leftResult = dfs ( node . left ) ;
24+ let rightResult = dfs ( node . right ) ;
25+
26+ leftResult = Math . max ( 0 , leftResult ) ;
27+ rightResult = Math . max ( 0 , rightResult ) ;
28+
29+ maximumSum = Math . max ( maximumSum , node . val + leftResult + rightResult ) ;
30+
31+ return node . val + Math . max ( leftResult , rightResult ) ;
32+ } ;
33+
34+ dfs ( root ) ;
35+
36+ return maximumSum ;
37+ }
You can’t perform that action at this time.
0 commit comments