LeetCode 549. 二叉树中最长的连续序列(树上DP)
文章目录
- 1. 题目
- 2. 解题
1. 题目
给定一个二叉树,你需要找出二叉树中最长的连续序列路径的长度。
请注意,该路径可以是递增的或者是递减。
例如,[1,2,3,4] 和 [4,3,2,1] 都被认为是合法的,而路径 [1,2,4,3] 则不合法。
另一方面,路径可以是 子-父-子 顺序,并不一定是 父-子 顺序。
示例 1:
输入:1/ \2 3
输出: 2
解释: 最长的连续路径是 [1, 2] 或者 [2, 1]。示例 2:输入:2/ \1 3
输出: 3
解释: 最长的连续路径是 [1, 2, 3] 或者 [3, 2, 1]。注意: 树上所有节点的值都在 [-1e7, 1e7] 范围内。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-longest-consecutive-sequence-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
class Solution {unordered_map<TreeNode*, vector<int>> dp; int maxlen = 0;
public:int longestConsecutive(TreeNode* root) {dfs(root);return maxlen;}void dfs(TreeNode* root){if(!root) return;dfs(root->left);dfs(root->right);dp[root] = {1,1};//上升,下降,的最大长度if(root->left){if(root->val == root->left->val+1)//左侧上升dp[root][0] = max(dp[root][0], dp[root->left][0]+1);else if(root->val == root->left->val-1)//左侧下降dp[root][1] = max(dp[root][1], dp[root->left][1]+1);}if(root->right){if(root->val == root->right->val+1)//右侧上升dp[root][0] = max(dp[root][0], dp[root->right][0]+1);else if(root->val == root->right->val-1)//右侧下降dp[root][1] = max(dp[root][1], dp[root->right][1]+1);}maxlen = max(maxlen, dp[root][0]+dp[root][1]-1);//以该节点为升降的和,-1为该节点重复计算1次}
};
44 ms 29.2 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
LeetCode 549. 二叉树中最长的连续序列(树上DP)相关推荐
- LeetCode 562. 矩阵中最长的连续1线段(DP)
文章目录 1. 题目 2. 解题 1. 题目 给定一个01矩阵 M,找到矩阵中最长的连续1线段. 这条线段可以是水平的.垂直的.对角线的或者反对角线的. 示例: 输入: [[0,1,1,0],[0,1 ...
- [LeetCode]124. 二叉树中的最大路径和(java实现)递归
[LeetCode]124. 二叉树中的最大路径和(java实现)递归 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总 ...
- LeetCode 1367. 二叉树中的列表(双重递归)
1. 题目 给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表. 如果在二叉树中,存在一条一直向下的路径,且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值,那么请你 ...
- LeetCode 1457. 二叉树中的伪回文路径(位运算+递归)
1. 题目 给你一棵二叉树,每个节点的值为 1 到 9 .我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列. 请你返回从根到叶子节点的所有路径中 伪回 ...
- 找出数组中最长的连续数字序列(JavaScript实现)
原始题目: 给定一个无序的整数序列, 找最长的连续数字序列. 例如: 给定[100, 4, 200, 1, 3, 2], 最长的连续数字序列是[1, 2, 3, 4]. 小菜给出的解法: 1 func ...
- Leetcode 124.二叉树中的最大路径和
124.二叉树中的最大路径和 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点. 示例 1: 输入: ...
- Leetcode 863.二叉树中所有距离为K的结点
Time: 20190924 Type: Medium 题目描述 给定一个二叉树(具有根结点 root), 一个目标结点 target ,和一个整数值 K . 返回到目标结点 target 距离为 K ...
- 【LeetCode】词典中最长的单词(附集合操作、lamda用法)
题目描述 给出一个字符串数组 words 组成的一本英语词典.返回 words 中最长的一个单词,该单词是由 words 词典中其他单词逐步添加一个字母组成. 若其中有多个可行的答案,则返回答案中字典 ...
- Java实现 LeetCode 124 二叉树中的最大路径和
124. 二叉树中的最大路径和 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点. 示例 1: 输入: ...
最新文章
- Client Dimensions , offsetHeight , scrollTop 属性详解
- 自动驾驶汽车的未来,“锂电池先驱”:需要更强劲的电池
- 手机端自适应布局demo
- python2定点找色_Python实现按键精灵(二)-找图找色
- 数字证书 - Java加密与安全
- 单例模式:Instance
- 白山云科技 CTO 童剑:空降后,如何有技术又有艺术地破局?
- 1.3 字符串的全排列
- 学习Spring Boot:(六) 集成Swagger2
- Linux日常运维管理技巧(三)iptables规则备份和恢复、firewalld的9个zone、任务计划cron、chkconfig系统服务管理、添加服务命令、systemctl管理服务
- GitHub 回应突然断供:身不由己,无权提前通知预警
- java素数判断连续素数_java 判断一个数是素数(优化)
- 宜昌市计算机一级考试真题,宜昌市人事局关于在大中专院校学生中开展计算机应用等级考试的通知...
- 信道估计---LS、MMSE、LMMSE准则
- NC气象文件转TIF影像小工具开发(PyQt5 开发)
- Contabs日志中报错:No MTA installed, discarding output
- List集合进行分组
- 关于scipy库里面的DCT离散余弦变换函数
- Java里面是先算乘除后算加减_java.怎么实现字串符的先乘除后加减阿
- 第9章 更复杂的光照