LeetCode 687. 最长同值路径(二叉树,递归)
1. 题目
给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。
注意:两个节点之间的路径长度由它们之间的边数表示。
示例 1:
输入:5/ \4 5/ \ \1 1 5
输出:
2示例 2:
输入:1/ \4 5/ \ \4 4 5
输出:
2
注意: 给定的二叉树不超过10000个结点。 树的高度不超过1000。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-univalue-path
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 递归解题
class Solution {int maxlen = 0;
public:int longestUnivaluePath(TreeNode* root) {if(!root)return 0;sameValue(root);//跟root值一样的longestUnivaluePath(root->left);longestUnivaluePath(root->right);return maxlen;}int sameValue(TreeNode* root){if(root == NULL)return 0;int leftLen = 0, rightLen = 0;if(root->left && root->left->val == root->val)leftLen = sameValue(root->left);if(root->right && root->right->val == root->val)rightLen = sameValue(root->right);maxlen = max(leftLen+rightLen, maxlen);//最大值实时更新,根左右连通,最长路径return 1+max(leftLen, rightLen);//传出去,只能选择一边的路径}
};
class Solution {int maxlen = 0;
public:int longestUnivaluePath(TreeNode* root) {sameValue(root);return maxlen;}int sameValue(TreeNode* root){if(root == NULL)return 0;int leftLen = sameValue(root->left);int rightLen = sameValue(root->right);int L = 0, R = 0;if(root->left && root->left->val == root->val)L = leftLen+1;if(root->right && root->right->val == root->val)R = rightLen+1;maxlen = max(L+R, maxlen);return max(L, R);}
};
LeetCode 687. 最长同值路径(二叉树,递归)相关推荐
- leetcode —— 687. 最长同值路径
给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们之间的边数表示.. -------------- 解题思路:使 ...
- Leetcode 687.最长同值路径
Time: 20190901 Type: Easy 题目描述 给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们 ...
- 【LeetCode】687. 最长同值路径
一.题目描述 给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们之间的边数表示. 二.示例 示例 1: 输入: ...
- leetcode 687. Longest Univalue Path | 687. 最长同值路径(树形dp)
题目 https://leetcode.com/problems/longest-univalue-path/ 题解:树形 dp 套路 实现1:带有 Info 类的树形 dp /*** Definit ...
- 最长路径算法 c语言_「算法」求二叉树的最长同值路径
给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们之间的边数表示. 示例 1: 输入: 输出: 2 示例 2: ...
- java最长同值路径_687.最长同路径值
题目描述 给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们之间的边数表示. 示例 输入: 5 / \ 4 5 ...
- 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】剑指 Offer 68 - II. 二叉树的最近公共祖先
[LeetCode]剑指 Offer 68 - II. 二叉树的最近公共祖先 文章目录 [LeetCode]剑指 Offer 68 - II. 二叉树的最近公共祖先 一.DFS 一.DFS 祖先的定义 ...
最新文章
- 深入浅出任务队列机制,非常浅
- 获取用户的IP地址的三个属性的区别
- js判断undefined和null
- [恢]hdu 1865
- Angularjs总结(五)指令运用及常用控件的赋值操作
- HDU 2841 Visible Trees(容斥)题解
- data 谷歌浏览器更改user 路径_Chrome浏览器自定义设置个人信息存储路径
- python随机选取0到100间的奇数_python random模块(随机数)详解
- 转]@SuppressWarnings 详解
- Spring read-only=true 只读事务的一些概念
- linux中rpm命令,linux中rpm命令使用介绍
- 一些平时遇到的英语单词摘录
- 【人情世故】汇报措辞
- Python手撸机器学习系列(十六):循环神经网络RNN的实现
- 欧姆龙PLC网关BL110之41:实现欧姆龙 PLC 接入Modbus TCP 云平台
- c#获取word文件页数、字数
- c++中 #defin的基本意思
- 事件介绍、两种事件注册的介绍、onload事件、onclick事件、onblur事件、onchange事件、onsubmit事件
- 扬帆优配|2600亿汽车巨头闪崩近9%,汽车股惊现“冰火两重天”!
- python版openvino使用
热门文章
- python如何避免转义字符_如何解决因转义字符而报错的问题(在使用python导入文件时)...
- 深度相机之TOF原理详解
- vps搭建网站服务器,vps如何架设网站服务器
- 前端radio单选框默认选中_「radio选中」单选框radio总结(获取值、设置默认选中值、样式) - seo实验室...
- 位运算实现四则运算(C++实现)
- spring-data-mongodb查询结果返回指定字段
- [转]Hadoop集群_WordCount运行详解--MapReduce编程模型
- SQL Server 2008R2数据库文件导入到SQL Server 2008数据库中
- 如何用jar命令对java工程进行打包
- jQuery心得5--jQuery深入了解串讲1