zoukankan      html  css  js  c++  java
  • leetcode-979-树

    https://leetcode.com/problems/distribute-coins-in-binary-tree/

      n个硬币随机分布在n个点上,要求每个点都拥有一个硬币,问最小的花费。

      对每一个root进行考虑,如果以他为根的子树的硬币个数大于节点个数,也就是说他多出来了x枚硬币,那么这x枚硬币一定是要走向他的父亲的,因为儿子不在需要了。此时就会在这条边产生x的贡献;反之就是需求硬币,是要从他父亲向他产生x的贡献。最后返回当前节点处理完之后剩余的硬币个数(正数即为多余,负数就是需求)。

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     int res;
    13     int dfs(TreeNode* root){
    14         if(root==NULL)return 0;
    15         int L=dfs(root->left);
    16         int R=dfs(root->right);
    17         res+=abs(L)+abs(R);
    18         return root->val+L+R-1;
    19     }
    20     
    21     int distributeCoins(TreeNode* root) {
    22         res=0;
    23         dfs(root);
    24         return res;
    25     }
    26 };
  • 相关阅读:
    编辑器漏洞
    csrf漏洞
    sdram控制2
    简易sdram控制1
    8051核
    AD7928
    FIR滤波器的verilog实现方法
    fft_cepin
    fft_fft_control
    FFT_fifo
  • 原文地址:https://www.cnblogs.com/zzqc/p/10405309.html
Copyright © 2011-2022 走看看