C/C++实现:二叉树染色:小扣有一个根结点为 root 的二叉树模型,初始所有结点均为白色,可以用蓝色染料给模型结点染色,模型的每个结点有一个 val 价值 某知名企业笔试题

题目描述:

小扣有一个根结点为 root 的二叉树模型,初始所有结点均为白色,可以用蓝色染料给模型结点染色,模型的每个结点有一个 val 价值。小扣出于美观考虑,希望最后二叉树上每个蓝色相连部分的结点个数不能超过 k 个,求所有染成蓝色的结点价值总和最大是多少?

示例1:

输入:root = [5,2,3,4], k = 2

输出:12

解释:结点 5、3、4 染成蓝色,获得最大的价值 5+3+4=12
 

C/C++实现:二叉树染色:小扣有一个根结点为 root 的二叉树模型,初始所有结点均为白色,可以用蓝色染料给模型结点染色,模型的每个结点有一个 val 价值 某知名企业笔试题_第1张图片

示例2:

输入:root = [4,1,3,9,null,null,2], k = 2

输出:16

解释:结点 4、3、9 染成蓝色,获得最大的价值 4+3+9=16
 

思路:

        使用动态规划的方式来实现

代码实现:

class Solution {
private:
    vector dfs(TreeNode* root, int k) {
        vector vec(k + 1, 0);
        if (!root) re

你可能感兴趣的:(C++秘笈,算法,数据结构,leetcode,华为od,c++)