Skip to content

Commit 2631128

Browse files
committed
💀 [124]
1 parent 0596d28 commit 2631128

File tree

2 files changed

+47
-61
lines changed

2 files changed

+47
-61
lines changed

124/my_solution.js

+39-37
Original file line numberDiff line numberDiff line change
@@ -12,58 +12,60 @@ class TreeNode {
1212
* @return {number}
1313
*/
1414
function maxPathSum(root) {
15-
let queue = [root], max = root.val;
15+
let max = root.val;
1616

1717
const exploreToFindMax = (node) => {
18-
if (node === null) return;
18+
if (node === null) return 0;
1919
console.log(`-> v:${node.val}`)
2020

21-
// let l = node.left, r = node.right;
22-
// if (l !== null) {}
23-
const defaultForNull = -Infinity;
21+
let exploreLeftVal = exploreToFindMax(node.left),
22+
exploreRightVal = exploreToFindMax(node.right);
23+
console.log(`exploreLeftVal:${exploreLeftVal}, exploreRightVal:${exploreRightVal}`);
2424

25-
let treeLeftVal = 0, exploreLeftVal = defaultForNull;
26-
if (node.left !== null) {
27-
treeLeftVal = node.left.val;
28-
// console.log("exploreToFindMax -> l")
29-
exploreLeftVal = node.val + exploreToFindMax(node.left);
30-
}
31-
// console.log("treeLeftVal")
32-
// console.log(treeLeftVal)
33-
// console.log("exploreLeftVal")
34-
// console.log(exploreLeftVal)
25+
// 0 represents not picking any of them
26+
// let treeMax = node.val + treeLeftVal + treeRightVal;
27+
// let treeMax = node.val + (node.left?.val ?? 0) + (node.right?.val ?? 0);
28+
let treeMax = node.val + exploreLeftVal + exploreRightVal;
3529

36-
let treeRightVal = 0, exploreRightVal = defaultForNull;
37-
if (node.right !== null) {
38-
treeRightVal = node.right.val;
39-
console.log("exploreToFindMax -> r")
40-
exploreRightVal = node.val + exploreToFindMax(node.right);
41-
console.log("exploreRightVal")
42-
console.log(exploreRightVal)
43-
}
44-
45-
let treeMax = node.val + treeLeftVal + treeRightVal; // 0 represents not picking any of them
46-
47-
max = Math.max(max, treeMax, exploreLeftVal, exploreRightVal);
48-
console.log("node.val")
49-
console.log(node.val)
30+
// max = Math.max(max, treeMax, node.val + Math.max(exploreLeftVal, exploreRightVal));
31+
max = Math.max(max, treeMax);
5032
console.log("node.val + Math.max(exploreLeftVal, exploreRightVal, 0)")
51-
console.log(node.val + Math.max(exploreLeftVal, exploreRightVal, 0))
52-
return node.val + Math.max(exploreLeftVal, exploreRightVal, 0);
33+
console.log(node.val + Math.max(exploreLeftVal, exploreRightVal))
34+
35+
return node.val + Math.max(exploreLeftVal, exploreRightVal);
36+
return Math.max(node.val + Math.max(exploreLeftVal, exploreRightVal), 0);
5337
};
5438

55-
while (queue.length > 0) {
56-
let curr = queue.shift(), left = curr.left, right = curr.right;
57-
if (left !== null) queue.push(left);
58-
if (right !== null) queue.push(right);
59-
exploreToFindMax(curr);
60-
}
39+
exploreToFindMax(root);
6140

6241
console.log("max")
6342
console.log(max)
6443
return max;
6544
}
6645

46+
// [-1,-2,10,-6,null,-3,-6]
47+
// maxPathSum(
48+
// new TreeNode(-1,
49+
// new TreeNode(-2,
50+
// new TreeNode(-6)
51+
// ),
52+
// new TreeNode(10,
53+
// new TreeNode(-3),
54+
// new TreeNode(-6)
55+
// )
56+
// )
57+
// )
58+
59+
// maxPathSum(
60+
// new TreeNode(-10,
61+
// new TreeNode(9),
62+
// new TreeNode(20,
63+
// new TreeNode(15),
64+
// new TreeNode(7)
65+
// )
66+
// )
67+
// )
68+
6769
maxPathSum(
6870
new TreeNode(1,
6971
new TreeNode(-2),

124/solution.js

+8-24
Original file line numberDiff line numberDiff line change
@@ -12,37 +12,21 @@ class TreeNode {
1212
* @return {number}
1313
*/
1414
function maxPathSum(root) {
15-
let queue = [root], max = root.val;
15+
let max = root.val;
1616

1717
const exploreToFindMax = (node) => {
18-
if (node === null) return;
18+
if (node === null) return 0;
1919

20-
const defaultForNull = -Infinity;
20+
let exploreLeftVal = exploreToFindMax(node.left),
21+
exploreRightVal = exploreToFindMax(node.right),
22+
treeMax = node.val + exploreLeftVal + exploreRightVal;
2123

22-
let treeLeftVal = 0, exploreLeftVal = defaultForNull;
23-
if (node.left !== null) {
24-
treeLeftVal = node.left.val;
25-
exploreLeftVal = node.val + exploreToFindMax(node.left);
26-
}
24+
max = Math.max(max, treeMax);
2725

28-
let treeRightVal = 0, exploreRightVal = defaultForNull;
29-
if (node.right !== null) {
30-
treeRightVal = node.right.val;
31-
exploreRightVal = node.val + exploreToFindMax(node.right);
32-
}
33-
34-
let treeMax = node.val + treeLeftVal + treeRightVal; // 0 represents not picking any of them
35-
36-
max = Math.max(max, treeMax, exploreLeftVal, exploreRightVal);
37-
return node.val + Math.max(exploreLeftVal, exploreRightVal, 0);
26+
return Math.max(node.val + Math.max(exploreLeftVal, exploreRightVal), 0);
3827
};
3928

40-
while (queue.length > 0) {
41-
let curr = queue.shift(), left = curr.left, right = curr.right;
42-
if (left !== null) queue.push(left);
43-
if (right !== null) queue.push(right);
44-
exploreToFindMax(curr);
45-
}
29+
exploreToFindMax(root);
4630

4731
return max;
4832
}

0 commit comments

Comments
 (0)