zoukankan      html  css  js  c++  java
  • leetcode 663. Equal Tree Partition

    Given a binary tree with n nodes, your task is to check if it's possible to partition the tree to two trees which have the equal sum of values after removing exactly one edge on the original tree.

    Example 1:

    Input:     
        5
       / 
      10 10
        /  
       2   3
    
    Output: True
    Explanation: 
        5
       / 
      10
          
    Sum: 15
    
       10
      /  
     2    3
    
    Sum: 15
    

    Example 2:

    Input:     
        1
       / 
      2  10
        /  
       2   20
    
    Output: False
    Explanation: You can't split the tree into two trees with equal sum after removing exactly one edge on the tree.
    

    Note:

    1. The range of tree node value is in the range of [-100000, 100000].
    2. 1 <= n <= 10000

    比赛的时候,sb了,求每颗子树的和的时候开了个数组用 i+1 和i+2去做下标,真是2啊。说这些都没用....

    其实,这题很简单,记录每个子树的和,如果是总和的1/2那么就能分成两个相等的子树。

    /**
     * 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>v;
        int sum;
        int dfs (TreeNode* root) {
            if (root == NULL) return 0;
            int ans = 0;
            ans += dfs(root->left);
            ans +=dfs(root->right);
            ans += root->val;
            v.push_back(ans);
            return ans;
        }
        bool checkEqualTree(TreeNode* root) {
            sum = dfs(root);
            if (v.size() == 1) return false;
            for (int i = 0; i < v.size(); ++i) {
                if (2*v[i] == sum) return true;
            }
            return false;
        }
    };
  • 相关阅读:
    strcmp()比较函数和strcasecmp()和strnatcmp()
    substr()函数
    改变字符串中的字母大小写
    explode()与相反函数 implode() 和join()
    PHP nl2br() 函数
    PHP trim() 函数
    PHP的count(数组)和strlen(字符串)的内部实现
    变量处理函数库
    php中定义数组的方法
    80端口的烦恼:[3]清除NT Kernel占用80端口
  • 原文地址:https://www.cnblogs.com/pk28/p/7399555.html
Copyright © 2011-2022 走看看