news 2026/5/1 3:57:48

leetcode 1339. 分裂二叉树的最大乘积 中等

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 1339. 分裂二叉树的最大乘积 中等

给你一棵二叉树,它的根为root。请你删除 1 条边,使二叉树分裂成两棵子树,且它们子树和的乘积尽可能大。

由于答案可能会很大,请你将结果对 10^9 + 7 取模后再返回。

示例 1:

输入:root = [1,2,3,4,5,6]输出:110解释:删除红色的边,得到 2 棵子树,和分别为 11 和 10 。它们的乘积是 110 (11*10)

示例 2:

输入:root = [1,null,2,3,4,null,null,5,6]输出:90解释:移除红色的边,得到 2 棵子树,和分别是 15 和 6 。它们的乘积为 90 (15*6)

示例 3:

输入:root = [2,3,9,10,7,8,6,5,4,11,1]输出:1025

示例 4:

输入:root = [1,1]输出:1

提示:

  • 每棵树最多有50000个节点,且至少有2个节点。
  • 每个节点的值在[1, 10000]之间。

分析:当两个数的和为定值时,若想乘积最大,则两个数的差应当尽可能小。可以先 DFS 求出所有节点的和,再进行一次 DFS,对每个节点求出它的左子树和与右子树和,再分别检查这两个和与总结点和一半的距离,保留所有节点距离总和一般最近的值,最后求乘积即可。即 DFS 过程中先不计算乘积,最后只计算一次乘积。

/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ typedef struct node { struct node *left,*right; long long val,left_sum,right_sum; }node; void Free(node *p) { if(p==NULL)return; Free(p->left); Free(p->right); free(p); } node *build_tree(struct TreeNode *r) { if(r==NULL)return NULL; node *p=(node*)malloc(sizeof(node)); p->val=r->val*1LL; p->left=build_tree(r->left);p->right=build_tree(r->right); if(p->left!=NULL)p->left_sum=p->left->val+p->left->left_sum+p->left->right_sum; else p->left_sum=0; if(p->right!=NULL)p->right_sum=p->right->val+p->right->left_sum+p->right->right_sum; else p->right_sum=0; return p; } long long get_ans(node *p,long long total) { if(p==NULL)return 0; long long sum=0,sum_l=p->left_sum,sum_r=p->right_sum; if(sum_l*2>total)sum_l=total-sum_l; if(sum_r*2>total)sum_r=total-sum_r; sum=fmax(sum_l,sum_r); return fmax(sum,fmax(get_ans(p->left,total),get_ans(p->right,total))); } int maxProduct(struct TreeNode* root) { long long mod=1e9+7,sum=0,ans=0,total=0; node *r=build_tree(root);total=r->val+r->left_sum+r->right_sum; ans=get_ans(r,total); Free(r); return ans*(total-ans)%mod; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 13:02:25

揭秘Azure虚拟机部署全流程:从零基础到专家级配置的完整路径

第一章:MCP Azure 虚拟机部署概述Azure 虚拟机(Virtual Machine)是 Microsoft Azure 平台提供的核心计算服务之一,支持灵活的资源调配与操作系统选择,适用于开发、测试、生产等多种场景。在 MCP(Microsoft …

作者头像 李华
网站建设 2026/4/28 7:56:59

Cursor Free VIP vs 传统开发:效率提升300%的秘密

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个效率对比工具,功能包括:1. 记录传统开发方式下的编码时间、错误率;2. 使用Cursor Free VIP后的相同指标;3. 自动生成对比图…

作者头像 李华
网站建设 2026/4/26 22:27:43

全面启航:从零起步畅享高效SEO优化技巧

本文将为你提供一份全面的SEO优化指南,适合从零起步的初学者。首先,您将理解SEO的基本概念,以及关键字在优化过程中的核心作用。接下来,我们将探讨如何通过优化网站结构来提升搜索引擎友好度和用户体验,同时强调高质量…

作者头像 李华
网站建设 2026/4/20 2:40:02

Drift对话式营销安全:Qwen3Guard-Gen-8B防止品牌声誉受损

Qwen3Guard-Gen-8B:用智能守护智能,构建对话式营销的安全防线 在品牌与用户通过AI实时互动的时代,一次“说错话”可能就是一场公关危机的起点。某国际电商平台曾因客服机器人一句看似无心的回应——“您所在地区不支持快速配送”,…

作者头像 李华
网站建设 2026/4/30 20:54:16

2026 年已到 想以全新执照开启创业路?

2026 年已至,想以全新执照开启创业路?春芽惠企同步北京最新政策,整合 “一网通办” 升级服务与创业补贴新政,全程线上办理无需跑政务大厅,让新年创业省心又省钱!​一、核心材料清单 公司名称:备…

作者头像 李华
网站建设 2026/4/6 11:20:04

零信任在MCP中的真实应用,5个高危场景及应对策略

第一章:MCP中零信任安全架构的演进与核心理念在现代云计算平台(MCP)快速发展的背景下,传统基于边界的网络安全模型逐渐失效。攻击面的扩大、远程办公的普及以及多云环境的复杂性,促使安全架构向“永不信任,…

作者头像 李华