【LeetCode】二叉树中的最大路径和
创作时间:
作者:
@小白创作中心
【LeetCode】二叉树中的最大路径和
引用
CSDN
1.
https://blog.csdn.net/qq_41840843/article/details/144993774
【LeetCode】二叉树中的最大路径和
💐The Begin💐点点关注,收藏不迷路💐
二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。
路径和 是路径中各节点值的总和。
给你一个二叉树的根节点 root ,返回其 最大路径和 。
示例 1:
输入:root = [1,2,3]
输出:6
解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6
示例 2:
输入:root = [-10,9,20,null,null,15,7]
输出:42
解释:最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42
提示:
树中节点数目范围是 [1, 3 * 104]
-1000 <= Node.val <= 1000
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
// 定义二叉树节点结构体
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
// 辅助函数:计算最大路径和
int maxPathSumHelper(struct TreeNode* root, int* maxSum) {
if (root == NULL) {
return 0;
}
// 递归计算左子树的最大单边路径和
int left = maxPathSumHelper(root->left, maxSum);
// 递归计算右子树的最大单边路径和
int right = maxPathSumHelper(root->right, maxSum);
// 计算以当前节点为根的最大单边路径和(包含当前节点)
int curMax = (left > 0? left : 0) + (right > 0? right : 0) + root->val;
// 更新全局最大路径和
if (curMax > *maxSum) {
*maxSum = curMax;
}
// 返回以当前节点为根的最大单边路径和(只能选择左子树或右子树)
return root->val + (left > right? (left > 0? left : 0) : (right > 0? right : 0));
}
// 计算二叉树的最大路径和
int maxPathSum(struct TreeNode* root) {
int maxSum = INT_MIN;
maxPathSumHelper(root, &maxSum);
return maxSum;
}
💐The End💐点点关注,收藏不迷路💐
热门推荐
素描基础:静物画法深度解析
NBA流言:东契奇被交易后爆发,"唤醒了一头野兽"
中美无人机之争:攻击-11引发的战术革命
告别焦虑,这些小技巧助你“满血复活”
现场直击 | 消防指战员都吃些什么……
山西文物古迹精华:15处国宝级文化遗产
用好我国亚热带区域这块农业发展宝地
杭州考人证怎么刷题:法律职业资格考试备考策略与技巧解析
留学生回国后如何办理美国退税
こちらこそ用法指南:展现日语寒暄的礼仪与谦虚
如何打造持续创新型团队
皮蛋美食全攻略:从凉拌到热炒,6种做法让你爱上这道传统美味
科学地让宝宝长高:市场上营养素那么多,儿科医生告诉你这样选
大三人力资源管理怎么写简历
《崩坏星穹铁道》补偿与版本时间规划的洞察
Gradle、AGP、JDK、API各版本插件匹配关系
一年四季,蒲公英不同的搭配,蒲公英不懂搭配,怎么努力都白费
量子密钥分发系统的设计与实现(四):量子密钥的产生过程分析
怪物猎人:曙光拍照功能竟能改变狩猎策略?揭秘游戏中的隐藏玩法
探秘磁共振脑白质高信号

7种常见食品防腐剂的性能及应用
嘴巴刺痛、总长溃疡,专家称牙膏成分或引发口腔问题
电子信息类21个专业全解析!最吃香的三个专业大揭秘
拔苗助长的故事 拔苗助长的寓意
水生所在原生动物有性生殖研究中取得系列进展
揭秘骚扰电话软件,防范与应对的实用指南
A股尾盘跳水!机器人概念股逆市走强 消费电子板块表现活跃
汽车大规模召回,谁最受伤?
消息面如何影响股市动态
肝硬化患者为什么会出现腹水