【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💐点点关注,收藏不迷路💐
热门推荐
安达唐获批儿童糖尿病治疗,社区管理再添新利器
解密聚光太阳能:5大项目展示清洁能源新趋势
PTC技术双管齐下,保障新能源汽车安全与舒适
汽车PTC加热器:快速升温、节能安全的智能选择
创意设计+社交功能,火锅店外坝子成品牌新战场
10万游客涌入冰雪大世界,哈尔滨警方这样保障安全
寒假去哪玩?哈尔滨冰雪大世界和亚布力滑雪场全攻略
昆明司机违规被罚暴露行业难题:如何平衡监管与司机权益
温州启动出租车整治行动,北京同步推“首违免罚”
洗衣机冬季故障怎么办?五步排查轻松解决
7个实用技巧让洗衣机既省水又省电
7.0级地震袭击加州北部海域,中美机构确认无海啸威胁
50岁女性职场转型:四大领域迎来新机遇
牛津词典年度热词“脑残”,揭示社交媒体危害
“脑残”成牛津词典年度词汇,引发社会热议
女性追星被指“脑残”?是时候打破这个偏见了
从布衣到帝王:刘秀的逆袭之路
刘秀VS刘玄:性格决定命运,能力铸就辉煌
气候变化加剧新兴市场自然灾害损失,保障缺口或超90%
护理行业人才短缺,毕业生就业率高但薪资待提升
证监会发布新年新政:A股分红激励加强,跨境投资迎机遇
喝水也要挑时间?这五个时刻最重要!
白开水的八大健康功效,你真的了解吗?
《红楼梦》音乐赏析:李银莲与陈学姣的音乐世界
吴碧霞 :唱不尽的《红楼梦》
李商隐《锦瑟》详解:典故背后的深情与哲思
护理专业毕业生职业发展指南:机遇与挑战并存
医院还是养老护理?护理专业毕业生就业前景全解析
数据揭示:人口老龄化驱动护理行业四大领域人才需求暴增
从世界技能大赛看护理专业前景:人才需求大,发展空间广