Skip to content

Commit 61edb01

Browse files
committed
package er_cha_shu_ran_se_ugc
1 parent df73c28 commit 61edb01

File tree

3 files changed

+53
-3
lines changed

3 files changed

+53
-3
lines changed

er-cha-shu-ran-se-UGC/export.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package er_cha_shu_ran_se_ugc
2+
func MaxValue(root *TreeNode, k int) int {
3+
return maxValue(root,k)
4+
}

er-cha-shu-ran-se-UGC/index.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package er_cha_shu_ran_se_ugc
2+
3+
import (
4+
"math"
5+
6+
sadbt "github.com/masx200/leetcode-test/serialize-and-deserialize-binary-tree"
7+
)
8+
9+
type TreeNode = sadbt.TreeNode
10+
11+
func maxValue(root *TreeNode, k int) int {
12+
return Max(dfs(root, k)...)
13+
}
14+
15+
func dfs(root *TreeNode, k int) []int {
16+
ans := make([]int, k+1)
17+
if root == nil {
18+
return ans
19+
}
20+
21+
left := dfs(root.Left, k)
22+
right := dfs(root.Right, k)
23+
for i := range ans {
24+
ans[i] = left[k] + right[k]
25+
}
26+
27+
for i := 1; i <= k; i++ {
28+
temp := math.MinInt
29+
for j := 0; j <= i-1; j++ {
30+
temp = Max(temp, left[j]+right[i-1-j])
31+
}
32+
ans[i] = Max(ans[i], temp+root.Val)
33+
}
34+
return ans
35+
}
36+
func Max(values ...int) int {
37+
38+
value := math.MinInt
39+
40+
for _, v := range values {
41+
if value < v {
42+
value = v
43+
}
44+
}
45+
return value
46+
}

er-cha-shu-ran-se-UGC/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { TreeNode } from "../binary-tree-inorder-traversal/TreeNode.ts";
2-
function maxValue(root: TreeNode | null, k: number) {
2+
function maxValue(root: TreeNode | null, k: number): number {
33
return Math.max(...dfs(root, k));
44
}
5-
function dfs(root: TreeNode | null, k: number) {
6-
const ans = Array(k + 1).fill(0);
5+
function dfs(root: TreeNode | null, k: number): number[] {
6+
const ans = Array<number>(k + 1).fill(0);
77
if (!root) return ans;
88

99
const left = dfs(root.left, k);

0 commit comments

Comments
 (0)