Leetcode 1339. 分裂二叉树的最大乘积(DAY 19)
发布日期:2021-06-30 22:24:21 浏览次数:2 分类:技术文章

本文共 1770 字,大约阅读时间需要 5 分钟。

原题题目

在这里插入图片描述



代码实现(首刷自解超时 自顶至底重复太多次)

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     struct TreeNode *left; *     struct TreeNode *right; * }; */#define MAX 9999999999long modulo;long dvalue;long maxmult;long visit(struct TreeNode* root){
if(!root) return 0; return visit(root->left) + visit(root->right) + root->val;} void multvisit(struct TreeNode* root,int sum){
if(root) {
long temp = visit(root); if(fabs(sum - temp - temp) < dvalue) {
dvalue = fabs(sum - temp - temp); maxmult = (sum - temp) * temp; } multvisit(root->left,sum); multvisit(root->right,sum); }}long maxProduct(struct TreeNode* root){
dvalue = MAX; maxmult = 0; modulo = pow(10,9) + 7; long sum = visit(root); multvisit(root,sum); return maxmult % modulo;}


代码实现(自底至顶 一遍即可)

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     struct TreeNode *left; *     struct TreeNode *right; * }; */#define MAX 9999999999long modulo;long dvalue;long maxmult;long visit(struct TreeNode* root){
if(!root) return 0; return visit(root->left) + visit(root->right) + root->val;} int multvisit(struct TreeNode* root,int sum){
if(!root) return 0; long rootnumber = root->val + multvisit(root->left,sum) + multvisit(root->right,sum); int temp = fabs(sum - rootnumber - rootnumber); if(temp < dvalue) {
dvalue = temp; maxmult = (sum - rootnumber) * rootnumber; } return rootnumber;}long maxProduct(struct TreeNode* root){
dvalue = MAX; maxmult = 0; modulo = pow(10,9) + 7; long sum = visit(root); multvisit(root,sum); return maxmult % modulo;}

转载地址:https://love6.blog.csdn.net/article/details/112305674 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Leetcode 662. 二叉树最大宽度(DAY 20)
下一篇:Leetcode 1367. 二叉树中的列表(DAY 19)(Leetcode百题成就截图)

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月15日 04时55分06秒