思路
先看3节点的子树,想要路径值相同,只能修改叶子节点的值,如上图只能2去+1操作。
核心思想:那么对于任意左右孩子节点,想要从根节点下来的路径相同,只能修改孩子节点。
所以我们只需要从下至上记录叶子节点到当前节点的路径值,然后计算当前节点和右节点的差值。
详细看灵神树上贪心【力扣周赛 344】_哔哩哔哩_bilibili
代码
class Solution {
private:
int res=0;
public:
int minIncrements(int n, vector<int>& cost) {
helper(n,cost,0);
return res;
}
int helper (int n,vector<int>& cost,int ind){
if(ind>=cost.size())
return 0;
int left = helper(n,cost,ind*2+1);
int right = helper(n,cost,ind*2+2);
res += abs(left-right);
return cost[ind]+max(left,right);
}
};
标签:helper,int,路径,2673,cost,二叉树,ind,节点
From: https://www.cnblogs.com/ganyq/p/18107893