[LeetCode]124. 二叉树中的最大路径和(java实现)递归

  • 1. 题目
  • 2. 读题(需要重点注意的东西)
  • 3. 解法
  • 4. 可能有帮助的前置习题
  • 5. 所用到的数据结构与算法思想
  • 6. 总结

1. 题目




2. 读题(需要重点注意的东西)

思路(递归):
最大路径和
枚举每个节点p,经过该节点的最大路径和有如下四种情况:

  1. p.val (左子树和右子树的最大路径均小于0)

  2. p.val + left(右子树的最大路径小于0)

  3. p.val + right (左子树的最大路径小于0)

  4. p.val + right + left(左子树和右子树的最大路径均大于0)

p.val为当前节点的值,left为p的左子树的路径最大值,right为p的右子树的路径最大值

沿父节点-子节点连接:即只能从该节点向上连接,如当前节点是15,那么可能存在红色路径,也可能存在蓝色路径;

但是绝不会是这样的路径

因此,当前节点作为父节点的一个子节点和父节点连接的话则只能取!!单边!!的最大值,即只能存在要么从左孩子而来的路径,要么从右孩子而来的一条路径

  1. 只有当前节点

  2. 当前节点+左子树

  3. 当前节点+右子树

3. 解法

---------------------------------------------------解法---------------------------------------------------

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {int res = Integer.MIN_VALUE;public int maxPathSum(TreeNode root) {dfs(root);return res;}// dfs的作用是返回子树一边的最大路径和private int dfs(TreeNode root){if(root == null) return 0;// 左孩子的最大和int left = Math.max(0,dfs(root.left));// 右孩子的最大和int right = Math.max(0,dfs(root.right));// 当前节点的最大和,!!!注意此处需要两边的最大和!!!res = Math.max(res,root.val + left + right);// 返回以root为根节点的单边的最大路径和return Math.max(left,right) + root.val;}
}

可能存在的问题:

4. 可能有帮助的前置习题

5. 所用到的数据结构与算法思想

6. 总结

[LeetCode]124. 二叉树中的最大路径和(java实现)递归相关推荐

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

    124.二叉树中的最大路径和 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点. 示例 1: 输入: ...

  2. Java实现 LeetCode 124 二叉树中的最大路径和

    124. 二叉树中的最大路径和 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点. 示例 1: 输入: ...

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

    题目 leetcode 124 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点. 代码 int ma ...

  4. LeetCode 124. 二叉树中的最大路径和(DFS)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点 ...

  5. Leetcode 124.二叉树中的最大路径

    解法1 解法 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNo ...

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

    124. 二叉树中的最大路径和: 题目链接 :124. 二叉树中的最大路径和 题目: 路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列.同一个节点在一条路径序列中 至多出 ...

  7. 【LeetCode笔记】124. 二叉树中的最大路径和(Java、二叉树、DFS)

    文章目录 题目描述 思路 & 代码 更新版 题目描述 好家伙我可太激动了,第一次光速A困难题. 应该是因为写过类似的二叉树的直径,不过这道倒是属于简单题.. 面试常考题,刷codetop看到了 ...

  8. 小黑感冒了蒸了桑拿搓了澡的喜茶leetcode之旅:124. 二叉树中的最大路径和

    递归+最大子段和(python) # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, ...

  9. 124. Binary Tree Maximum Path Sum 二叉树中的最大路径和

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

最新文章

  1. 微信小程序如何使用iconfont阿里巴巴图标库?
  2. [ADB]ADB(Android Debug Bridge)简介及基础(不包含命令)
  3. wordpress在新窗口打开留言者链接
  4. 用Excel三天做出的可视化报告,我用这个工具只用了2小时
  5. java.lang.IllegalArgumentException: Request header is too large
  6. 执行cmd并获得结果_用JAVA执行CMD命令备份PG数据库,解决需要口令的问题
  7. mfc 固定编辑框输入上限和下限_S7200smart的模拟量输入输出
  8. Kejin Game UVALive - 7264 (最大流转最小割)
  9. 用计算机分析卫星云图 进行实时天气,卫星云图,气象卫星云图,卫星云图高清实时滚动播放 - 围观天气...
  10. 加速数据无限超高速空间免费虚拟主机无限大小 支持SSL
  11. c语言题库字母顺序,C语言题库(带答案)-排版-
  12. 计算机综合应用教材,系统测评计算机综合应用技能期末作业教材.doc
  13. 计算机win10+上锁,win10系统给电脑屏幕上锁的操作方法
  14. 极客时间、慕课网看课感悟
  15. 用Vue-cli从头搭建项目
  16. python matplotlib三维画图、二维画图常用命令总结
  17. JavaScript实现模板生成大量数据的方法(附代码)
  18. 7 进度指示器(LinearProgressIndicator、CircularProgressIndicator)
  19. PHP调用ZPL斑马指令 打印二维码标签
  20. 寒江独钓 第三章 串口的过滤

热门文章

  1. python颜值打分器--你的长相能打几分
  2. Python 两个乒乓球队进行比赛,请编程序找出两队参赛对手的名单,不用库算法
  3. 【Spark】Spark报错:Could not locate executable null\bin\winutils.exe in the Hadoop binaries
  4. C++跳跃游戏(青蛙跳)
  5. Unity 剧情类游戏基础脚本
  6. 未知的漏洞才是最可怕的存在之漏洞零日
  7. EPUB、CAJ 、PDF 格式的区别,Mac上有什么好用的epub阅读器
  8. 大屏---Echart之雷达图
  9. 如何设计一个 A/B test --来自腾讯数据分析师的分享
  10. newifi3 web认证_关于wifi portal认证--为浏览器添加wifi认证功能