LeetCode实战:二叉树中的最大路径和
背景
- 为什么你要加入一个技术团队?
- 如何加入 LSGO 软件技术团队?
- 我是如何组织“算法刻意练习活动”的?
- 为什么要求团队的学生们写技术Blog
题目英文
Given a non-empty binary tree, find the maximum path sum.
For this problem, a path is defined as any sequence of nodes from some starting node to any node in the tree along the parent-child connections. The path must contain at least one node and does not need to go through the root.
Example 1:
Input: [1,2,3]1/ \2 3Output: 6
Example 2:
Input: [-10,9,20,null,null,15,7]-10/ \9 20/ \15 7Output: 42
题目中文
给定一个非空二叉树,返回其最大路径和。
本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。
示例 1:
输入: [1,2,3]1/ \2 3输出: 6
示例 2:
输入: [-10,9,20,null,null,15,7]-10/ \9 20/ \15 7输出: 42
算法实现
8/ \-3 7/ \
1 4
考虑左子树 -3 的路径的时候,我们有左子树 1 和右子树 4 的选择,但我们不能同时选择。
如果同时选了,路径就是 … -> 1 -> -3 -> 4 就无法通过根节点 8 了。
所以我们只能去求左子树能返回的最大值,右子树能返回的最大值,选一个较大的。
/*** Definition for a binary tree node.* public class TreeNode {* public int val;* public TreeNode left;* public TreeNode right;* public TreeNode(int x) { val = x; }* }*/
public class Solution
{private int _max = int.MinValue;public int MaxPathSum(TreeNode root){MaxPath(root);return _max;}private int MaxPath(TreeNode current){if (current == null)return 0;int left = Math.Max(MaxPath(current.left), 0);int right = Math.Max(MaxPath(current.right), 0);_max = Math.Max(_max, current.val + left + right);return current.val + Math.Max(left, right);}
}
实验结果
- 状态:通过
- 93 / 93 个通过测试用例
- 执行用时: 152 ms, 在所有 C# 提交中击败了 86.96% 的用户
- 内存消耗: 29.7 MB, 在所有 C# 提交中击败了 37.50% 的用户
相关图文
1. “数组”类算法
- LeetCode实战:三数之和
- LeetCode实战:最接近的三数之和
- LeetCode实战:求众数
- LeetCode实战:缺失的第一个正数
- LeetCode实战:快乐数
- LeetCode实战:寻找两个有序数组的中位数
- LeetCode实战:盛最多水的容器
- LeetCode实战:删除排序数组中的重复项
- LeetCode实战:搜索旋转排序数组
- LeetCode实战:螺旋矩阵
- LeetCode实战:螺旋矩阵 II
2. “链表”类算法
- LeetCode实战:两数相加
- LeetCode实战:删除链表的倒数第N个节点
- LeetCode实战:合并两个有序链表
- LeetCode实战:合并K个排序链表
- LeetCode实战:两两交换链表中的节点
- LeetCode实战:旋转链表
- LeetCode实战:环形链表
3. “栈”类算法
- LeetCode实战:有效的括号
- LeetCode实战:最长有效括号
- LeetCode实战:逆波兰表达式求值
4. “队列”类算法
- LeetCode实战:设计循环双端队列
- LeetCode实战:滑动窗口最大值
- LeetCode实战:整数反转
- LeetCode实战:字符串转换整数 (atoi)
5. “递归”类算法
- LeetCode实战:爬楼梯
6. “字符串”类算法
- LeetCode实战:反转字符串
- LeetCode实战:翻转字符串里的单词
- LeetCode实战:最长公共前缀
- LeetCode实战:字符串相加
- LeetCode实战:字符串相乘
7. “树”类算法
- LeetCode实战:相同的树
- LeetCode实战:对称二叉树
- LeetCode实战:二叉树的最大深度
- LeetCode实战:将有序数组转换为二叉搜索树
8. “哈希”类算法
- LeetCode实战:两数之和
9. “搜索”类算法
- LeetCode实战:搜索二维矩阵
- LeetCode实战:子集
10. “动态规划”类算法
- LeetCode实战:最长回文子串
- LeetCode实战:最大子序和
- LeetCode实战:不同路径
11. “回溯”类算法
- LeetCode实战:全排列
12. “数值分析”类算法
- LeetCode实战:回文数
- LeetCode实战:x 的平方根
LeetCode实战:二叉树中的最大路径和相关推荐
- [LeetCode]124. 二叉树中的最大路径和(java实现)递归
[LeetCode]124. 二叉树中的最大路径和(java实现)递归 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总 ...
- Leetcode 124.二叉树中的最大路径和
124.二叉树中的最大路径和 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点. 示例 1: 输入: ...
- Java实现 LeetCode 124 二叉树中的最大路径和
124. 二叉树中的最大路径和 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点. 示例 1: 输入: ...
- LeetCode 124. 二叉树中的最大路径和(DFS)
文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点 ...
- leetcode 124 二叉树中的最大路径和 C语言
题目 leetcode 124 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点. 代码 int ma ...
- Leetcode 124.二叉树中的最大路径
解法1 解法 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNo ...
- 124. Binary Tree Maximum Path Sum 二叉树中的最大路径和
Title 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点. 示例 1: 输入: [1,2,3] 1 ...
- NC6 二叉树中的最大路径和
这里写自定义目录标题 题目描述 思路 递归 题目描述 寻找二叉树中从任意节点开始的最大不重复路径和 示例: 输入:{1,2,3} 输出:6 原题链接:NC6 二叉树中的最大路径和 思路 拿到这道题第一 ...
- 124. 二叉树中的最大路径和
124. 二叉树中的最大路径和: 题目链接 :124. 二叉树中的最大路径和 题目: 路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列.同一个节点在一条路径序列中 至多出 ...
最新文章
- What is a lambda expression in C++11?
- 面对对象的程序设计初探总结
- 计组之指令系统:3、CISC和RISC
- 研究一下识别验证码,。。。随笔记录
- 使用Spring Boot开发者工具进行自动重启和页面自动刷新
- 基于RNN和CTC的语音识别模型,探索语境偏移解决之道
- Docker和Ubuntu主机互传复制文件
- Rust 1.34替代Cargo注册表 与crates.io共存
- 5G虚拟专网七大典型行业案例!(附下载)
- 计算机编程ebcdic码,ASCII码和EBCDIC码
- dyn_threshold 算子
- 电脑可以连接手机热点,却无法连路由器无线wifi
- Internet Explorer 无法打开该 Internet 站点。请求的站点不可用
- 基于Android的MediaPlayer的音乐播放器的封装
- DDR3的学习笔记(一)
- Android Studio新手必读
- explicit,violate,volatile,mutable
- 自动领取起点网页版的经验值
- 全网最详细的Gephi安装与使用教程
- python 使用excel画图
热门文章
- java 并发统计_java并发编程|CountDownLatch计数器
- STARTUP报错:ORA-00205: error in identifying control file, check alert log for more info
- Python培训教程分享:“高效实用” 的Python工具库
- 软件测试培训:如何搭建测试环境
- 参加前端培训主要学习什么语言
- animation与transition区别
- Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件...
- mysql limit offset
- 多角度解析自动驾驶芯片
- 2021全国高校计算机能力挑战赛(初赛)C语言试题一