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

    思路:

    递归求子树的和,观察子树的和是否是整个树的和的一半即可。

    int sumTree(TreeNode* root)
    {
      if(root==NULL)return 0;
      int left = sumTree(root->left);  
      int right = sumTree(root->right);
      return root->val+left+right;
    }
    
    bool bianli(TreeNode* root,int sum)
    {
      if(root==NULL)return false;
      if(sumTree(root->left)*2==sum)return true;  
      if(sumTree(root->right)*2==sum)return true;
      return (bianli(root->left,sum) ||  bianli(root->right,sum));
    }
     bool checkEqualTree(TreeNode* root)
     {
       if(root==NULL ||(root->left==NULL && root->right==NULL))return false;
        int sum = sumTree(root);
        if(sum%2==1)return false;
         return bianli(root,sum);        
      }
  • 相关阅读:
    名字空间,L,E, G , B 作用域, 内置电池
    lambda表达式
    表达式与声明的区别。
    jupyter book的使用
    centos7一键安装cacti_1.2.16版本
    docker修改阿里云镜像加速器
    centos单网卡多ip,被动模式
    centos同步时间
    centos7.x制作bond
    centos 6.X制作bond
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/7399292.html
Copyright © 2011-2022 走看看