【LeetCode】687. 最长同值路径
一、题目描述
给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。
注意:两个节点之间的路径长度由它们之间的边数表示。
二、示例
示例 1:
输入:
5/ \4 5/ \ \1 1 5
输出:
2
示例 2:
输入:
1/ \4 5/ \ \4 4 5
输出:
2
注意: 给定的二叉树不超过10000个结点。 树的高度不超过1000。
三、分析
每个子树的最长同值路径为:其左子树的最长同值路径+右子树的最长同值路径。
递归求解。对于某个节点,判断其左孩子的值是否与其相等,相等则left
等于1+左子树的最长同值路径,否则直接处理左子树,对右子树做相同计算。计算left
、right
之和,更新最大值,返回left
和right
的最大值。
四、实现
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {public:int longestUnivaluePath(TreeNode* root) {if(root == NULL)return 0;int max = 0;dfs(root, max);return max;}int dfs(TreeNode* root, int &max){int left = 0;int right = 0;if(root->left != NULL && root->val == root->left->val){left = 1 + dfs(root->left, max);}else if(root->left != NULL){dfs(root->left, max);}if(root->right != NULL && root->val == root->right->val){right = 1 + dfs(root->right, max);}else if(root->right != NULL){dfs(root->right, max);}if(left + right > max)max = left + right;return left > right ? left : right ; }
};
【LeetCode】687. 最长同值路径相关推荐
- leetcode —— 687. 最长同值路径
给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们之间的边数表示.. -------------- 解题思路:使 ...
- LeetCode 687. 最长同值路径(二叉树,递归)
1. 题目 给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们之间的边数表示. 示例 1: 输入:5/ \4 5 ...
- Leetcode 687.最长同值路径
Time: 20190901 Type: Easy 题目描述 给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们 ...
- leetcode 687. Longest Univalue Path | 687. 最长同值路径(树形dp)
题目 https://leetcode.com/problems/longest-univalue-path/ 题解:树形 dp 套路 实现1:带有 Info 类的树形 dp /*** Definit ...
- java最长同值路径_687.最长同路径值
题目描述 给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们之间的边数表示. 示例 输入: 5 / \ 4 5 ...
- 最长路径算法 c语言_「算法」求二叉树的最长同值路径
给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们之间的边数表示. 示例 1: 输入: 输出: 2 示例 2: ...
- LeetCode 70爬楼梯71简化路径72编辑距离(dp)
新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注这个潇洒青年一起飞,回 ...
- LeetCode 1027. 最长等差数列(DP)
1. 题目 给定一个整数数组 A,返回 A 中最长等差子序列的长度. 回想一下,A 的子序列是列表 A[i_1], A[i_2], ..., A[i_k] 其中 0 <= i_1 < i_ ...
- LeetCode 674. 最长连续递增序列 (滑动窗口 计数法)
LeetCode 674. 最长连续递增序列 滑动窗口 右边界不断往右移动 左边界收缩条件:当右边界的值小于等于其左边的值时(递减) 左边界收缩到右边界当前位置 class Solution {pub ...
最新文章
- iOS12系统应用发送普通邮实现发送
- 千字谏言!Python入门:这两点绝对不能偷懒!否则工作后必后悔
- 浏览器屏蔽flash视频广告
- tensorflow之安装tensorboard
- 关联规则(Apriori、FP-grpwth)
- 读取文本节点_Python文本处理教程(2)
- 计算机中键盘可以共享吗,两个电脑怎么共用一个键盘
- 虚拟服务器网络无法连接,VMware虚拟机XP系统网络无法连接受限制或无连接解决方法...
- yum源的三种安装配置方式,总有一款适合你
- 编程猫 python教材_编程猫全新推出系列编程教材补足编程系统性教学内容,教育部评审专家作序推荐...
- 5-IP地址、端口、DNS服务器
- 电路里的希腊字母读音
- 和cool一起学前端----第八天
- 2020年每个Web开发人员必须知道的9种Web技术
- cocos2dx iphoneX 游戏适配
- 阿里云客服联系方式汇总
- STM32 (基于HAL库) 硬件IIC读写任意AT24CXX芯片
- [学习笔记]模拟退火
- 【R语言】必学包之dplyr包
- 手机故障手机通讯录被删除了怎么恢复
热门文章
- PLSQL远程连接oracle数据库
- EXC中时间控件的使用
- c语言天花板和地板,父母有两种,一种是天花板,一种是地板,你是孩子的啥?...
- linux mv 环境变量,linux环境变量 cp mv 以及文档查看的几个命令
- webapi输出炜json_WebApi返回Json格式
- git 怎么读_python3中开源代码怎么读?
- linux开发板加快开机速度,readahead加速Linux开机速度
- python什么是数据结构_〖Python〗-- 数据结构
- java连服务器mysql报错_tomcat程序连接服务器mysql数据库报错
- kafka linux客户端,kafka linux 客户端操作命令