leetcode124. 二叉树中的最大路径和

【leetcode】124 二叉树中的最大路径和(二叉树,递归) 题目链接:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/ 题目描述 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 输入: [1,2,3] 1 / \ 2 3 输出... 阅读详情

题目

给定一个非空二叉树,返回其最大路径和。

本题中,路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。

示例 1:

输入:[1,2,3]

       1
      / \
     2   3

输出:6

示例2:

输入:[-10,9,20,null,null,15,7]

   -10
   / \
  9  20
    /  \
   15   7

输出:42

思路

dfs的过程中会经历每个父节点,并计算出经过该父节点的最大路径和,将每个父节点的最大路径和与全局max比较,最终得到整个二叉树的最大路径和

实现

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int max = 0;
    int maxPathSum(TreeNode* root) {
        max = root->val;
        func(root);
        return max;
    }
    // input : 父节点   output:父节点最大的子树路径(要么是左子树要么是右子树)    
    // func作用: 深度遍历整个树,将max值逐个与 "每个父节点的最大路径" 做比较,遍历完后即为全局的最大路径
    int func(TreeNode* root) {
        int tmp = root->val;
        int left_child = 0;
        if (root->left) {
            int a = func(root->left);
            if (a > 0) {
                left_child = a;
            }
        }
        int right_child = 0;
        if (root->right) {
            int a = func(root->right);
            if (a > 0) {
                right_child = a;
            }
        }
        if (root->val + left_child + right_child > max) {
            max = root->val + left_child + right_child;
        }
        return root->val + std::max(left_child, right_child);
    }
};
【困难】力扣算法题解析LeetCode124:二叉树中的最大路径和 题目要求计算二叉树中的最大路径和,路径定义为节点序列,节点至多出现一次。通过深度优先搜索(DFS)和动态规划思想解决: 递归遍历:计算左右子树的贡献值(若为负则舍弃)。 更新最大值:当前节点作为路径转折点时的和(节点值 + 左贡献 + 右贡献)。 返回单边最大和:供父节点拼接路径。 时间复杂度O(N),空间复杂度O(N)(递归栈)。 代码实现:维护全局变量maxSum,递归函数返回单边路径和,动态更新最大值。 阅读详情

相关推荐

Android双目摄像头(RGB+IR)实时预览与人脸活体检测实战指南

本文详细介绍了Android双目摄像头(RGB+IR)实时预览与人脸活体检测的实战指南。通过双摄同步预览、人脸检测与活体判断等技术实现,提升安全认证的准确性和鲁棒性。文章还提供了开发环境搭建、常见问题解决方案及性能优化建议,帮助开发者快速掌握双目摄像头在Android平台的应用。

vulkan6gpu的博客 689

124. 二叉树中的最大路径和 ---- 最小树分类、递归

路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root ,返回其 最大路径和 。 示例 1: 输入:root = [1,2,3]输出:6解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + ...

Mercury_cc的博客 153

OneNet平台MQTT连接避坑指南:C语言Token计算实战(附完整代码)

本文详细解析了OneNet平台MQTT连接中的Token计算机制,提供了C语言实现的完整代码和实战指南。通过HMAC算法和Base64编码,开发者可以高效生成安全凭证,避免常见连接问题,适用于物联网设备开发。

weixin_29193359的博客 459

[LeetCode]124. 二叉树中的最大路径和

124. 二叉树中的最大路径和 难度困难1155收藏分享切换为英文接收动态反馈 路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root ,返回其 最大路径和 。 示例 1: 输入:root = [1,2,3] 输出:6 解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6 示例 2

张小猪的家 1561

AGV、RGV、四向车openTCS调度系统(三)车辆适配器解读,封装自己的适配器

AGV、RGV、四向车调度。理解适配器的整体作用,以及如何使用官方例子改造自己的适配器,

要这头发有何用 3610

Apifox CLI + Claude Skills:将接口自动化测试融入ai

基于 Apifox CLI、Claude Code以及Claude Skills组合,实现自然语言触发接口自动化测试。

wwz_0012的博客 597

LeetCode 124. 二叉树中的最大路径和【DFS】

给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 输入:[1,2,3] 1 / \ 2 3 输出:6 示例 2: 输入:[-10,9,20,null,null,15,7] -10 / \ 9 20 / \ 15 7 输出:42 从根结点开始搜索,分别找出当前节点的左右子树最大路径和再更新就行了。 /** * Defi

ln2037的博客 205

Simulink中Simscape—Fluids模块(原Simhydraulics)学习记录

学习来源:http://cn.mathworks.com/help/physmod/hydro/getting-started-with-simhydraulics.html 主要学习内容如下图: 详细内容: 1、组件来源 SIMULINK浏览器中的模块:Simscape_Foundation 和 Simscape_Fluids。 2、Simscape下包括多个子

1万+

LeetCode-124-二叉树中的最大路径和

题意描述: 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例: 示例一: 输入: [1,2,3] 1 / \ 2 3 输出: 6 示例二: 输入: [-10,9,20,null,null,15,7] -10 / \ 9 20...

花花生的博客 472

华为的LTC(Lead to Cash,从线索到现金)流程是其销售管理体系的核心,覆盖了从发现销售线索到最终收回现金的全过程,强调端到端的业务贯通和以客户为中心的运营理念

华为LTC流程是覆盖销售全周期的管理体系,包含四大阶段:线索转机会(LTO)、机会转订单(OTO)、订单转交付(OTD)、交付转现金(DTC)。其核心采用"铁三角"团队模式(AR/SR/FR协作),通过多部门联合评审把控关键节点,实现端到端业务贯通。该流程与IPD、MTL、ITR等体系高效协同,结合iSales平台实现数字化管理,有效提升销售效率、客户满意度和资金回笼速度。

金牌架构师 1718

30.Labview如何读懂别人程序、修改程序?

之前写过一次教大家的文章,这次教大家如何学习别人的程序,和如何搭建一套适合自己的程序框架。这里事先说明一下:要想搭好程序框架,一定要先把自己的系统,逻辑是什么!这非常重要,是决定你程序的关键因素。废话不多扯,直接说重点。

关注我,更多技术问题欢迎私聊~ 2445

二叉树中的最大路径和

题目 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 输入: [1,2,3] 1 / \ 2 3 输出: 6 示例 2: 输入: [-10,9,20,null,null,15,7] -10 / \ 9 20 / \ 15 7 输出: 42 来源:力扣(LeetCode) 链接:https://leet

看,未来的博客 2698

华为OD机试真题 C 实现【水库蓄水问题】【2022.11 Q4 新题】

给定一个长度为 n 的整数数组height。数组的元素表示山的高度,选择两个元素作为水库的边界,求蓄水量的最大值并输出蓄水量最大时的边界下标(蓄水量相同时输出下标较近的)。

MISAYAONE的博客 1万+

LeetCode 力扣 124. 二叉树中的最大路径和

题目描述(困难难度) 考虑一条路径,可以从任意节点开始,每个节点最多经过一次,问经过的节点的和最大是多少。 解法一 递归 参考了 这里。 首先看到二叉树的题,肯定就是想递归了。递归常规的思路,肯定是递归考虑左子树的最大值,递归考虑右子树的最大值。 public int maxPathSum(TreeNode root) { if (root == null) { retu...

wind_liang的博客 1125

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LeetCode第124题_二叉树中的最大路径和

路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点root,返回其 最大路径和。

qq_40263592的博客 2035

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

力扣LeetCode #124 二叉树中的最大路径和(maxPathSum)

- 题目描述 路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。 提示: 树中节点数目范围是 [1, 3 * 104] -1000 <= Node.val <= 1000 来源:LeetCode - 示例 示例 1: 输入:root = [1,2,3] 输出:6 解释:最优路径是

weixin_49155948的博客 304

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【Leetcode】124. 二叉树中的最大路径和

Leetcode.124: 二叉树中的最大路径和题目描述解题过程代码展示 题目描述 路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中至多出现以此,该路径至少包含一个节点,且不一定经过根节点。 路径和是路径中各节点值得总和。 给你一个二叉树的根结点root,返回其最大路径和。 示例1: 输入:root = [1, 2, 3] 输出:6 解释:最优路径是2->1->3,路径和为2+1+3=6 示例2 输入:root = [-10,9,20

小哲的博客 3097

每日一题:Leetcode-124 二叉树中的最大路径和

力扣题目解题思路java代码。

LIUCHANGSHUO的博客 1032

力扣第124题 二叉树中的最大路径和

记录一下刷题历程 力扣第124题 二叉树中的最大路径和。

buaichifanqie的博客 927

golang力扣leetcode 124. 二叉树中的最大路径和

124. 二叉树中的最大路径和124. 二叉树中的最大路径和题解代码 124. 二叉树中的最大路径和 124. 二叉树中的最大路径和 题解 思路,递归,大问题分解成小问题 代码 package main import "math" type TreeNode struct { Val int Left *TreeNode Right *TreeNode } func maxPathSum(root *TreeNode) int { maxSum := math.MinInt32 var

清风 613

124. 二叉树中的最大路径和【 力扣(LeetCode) 】

二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次。该路径 至少包含一个 节点,且不一定经过根节点。给你一个二叉树的根节点 root ,返回其 最大路径和。路径和 是路径中各节点值的总和。

yyh520025的博客 761

【LeetCode】第124题:二叉树的最大路径和

LeetCode 链接:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/ 本题可以对比左神算法中的:二叉树中的最远距离,只不过最远距离中没有考虑权重的问题,本题需要考虑每个节点的权重问题,还是有所区别的。 题目:给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该...

Java学习 1402

leetcode 124 二叉树中的最大路径和 C语言

题目 leetcode 124 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 代码 int maxPathSum__(struct TreeNode *root, int *max) { if (root == NULL) return 0; int l = maxPathSu...

qq_42007287的博客 1051

leetcode hot100【LeetCode 124.二叉树中的最大路径和】java实现

LeetCode 124.二叉树中的最大路径和

DataCrafter的博客 1512

leetcode124二叉树的最大路径和

leetcode124 二叉树的最大路径和 题目详情 Java代码 public class Solution { private static int max = Integer.MIN_VALUE; public int maxPathSum(TreeNode root){ helper(root); return max; } ...

suyongcai1234的博客 176

LeetCode 124:二叉树中的最大路径和

LeetCode 124:二叉树中的最大路径和题目描述解题思路代码实现总结 题目描述 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 解题思路 通过递归求当前节点为根节点的左右子树路径和(路径和=当前节点权值+左子树节点权值+右子树节点权值),和现有最大路径和比较,并更新。当递归结束,返回上一...

香农三定律的博客 199
上一篇: leetcode152. 乘积最大子数组
下一篇: leetcode236. 二叉树的最近公共祖先
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值