LCP 34
Solutions
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<int> dfs(TreeNode* root, int k) {
if (!root) return vector<int>(k + 1);
auto vl = dfs(root->left, k);
auto vr = dfs(root->right, k);
vector<int> res(k + 1);
for (int i = 0; i <= k; i++)
for (int j = 0; j <= k; j++) {
res[0] = max(res[0], vl[i] + vr[j]);
if (i + j + 1 <= k)
res[i + j + 1] = max(res[i + j + 1], root->val + vl[i] + vr[j]);
}
return res;
}
int maxValue(TreeNode* root, int k) {
auto v = dfs(root, k);
int res = 0;
for (int i = 0; i <= k; i++)
res = max(res, v[i]);
return res;
}Last updated