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. 最长同值路径(二叉树,递归)相关推荐

  1. leetcode —— 687. 最长同值路径

    给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们之间的边数表示.. -------------- 解题思路:使 ...

  2. Leetcode 687.最长同值路径

    Time: 20190901 Type: Easy 题目描述 给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们 ...

  3. 【LeetCode】687. 最长同值路径

    一.题目描述 给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们之间的边数表示. 二.示例 示例 1: 输入: ...

  4. leetcode 687. Longest Univalue Path | 687. 最长同值路径(树形dp)

    题目 https://leetcode.com/problems/longest-univalue-path/ 题解:树形 dp 套路 实现1:带有 Info 类的树形 dp /*** Definit ...

  5. 最长路径算法 c语言_「算法」求二叉树的最长同值路径

    给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们之间的边数表示. 示例 1: 输入: 输出: 2 示例 2: ...

  6. java最长同值路径_687.最长同路径值

    题目描述 给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们之间的边数表示. 示例 输入: 5 / \ 4 5 ...

  7. LeetCode 70爬楼梯71简化路径72编辑距离(dp)

    新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注这个潇洒青年一起飞,回 ...

  8. LeetCode 1027. 最长等差数列(DP)

    1. 题目 给定一个整数数组 A,返回 A 中最长等差子序列的长度. 回想一下,A 的子序列是列表 A[i_1], A[i_2], ..., A[i_k] 其中 0 <= i_1 < i_ ...

  9. 【LeetCode】剑指 Offer 68 - II. 二叉树的最近公共祖先

    [LeetCode]剑指 Offer 68 - II. 二叉树的最近公共祖先 文章目录 [LeetCode]剑指 Offer 68 - II. 二叉树的最近公共祖先 一.DFS 一.DFS 祖先的定义 ...

最新文章

  1. 深入浅出任务队列机制,非常浅
  2. 获取用户的IP地址的三个属性的区别
  3. js判断undefined和null
  4. [恢]hdu 1865
  5. Angularjs总结(五)指令运用及常用控件的赋值操作
  6. HDU 2841 Visible Trees(容斥)题解
  7. data 谷歌浏览器更改user 路径_Chrome浏览器自定义设置个人信息存储路径
  8. python随机选取0到100间的奇数_python random模块(随机数)详解
  9. 转]@SuppressWarnings 详解
  10. Spring read-only=true 只读事务的一些概念
  11. linux中rpm命令,linux中rpm命令使用介绍
  12. 一些平时遇到的英语单词摘录
  13. 【人情世故】汇报措辞
  14. Python手撸机器学习系列(十六):循环神经网络RNN的实现
  15. 欧姆龙PLC网关BL110之41:实现欧姆龙 PLC 接入Modbus TCP 云平台
  16. c#获取word文件页数、字数
  17. c++中 #defin的基本意思
  18. 事件介绍、两种事件注册的介绍、onload事件、onclick事件、onblur事件、onchange事件、onsubmit事件
  19. 扬帆优配|2600亿汽车巨头闪崩近9%,汽车股惊现“冰火两重天”!
  20. python版openvino使用

热门文章

  1. python如何避免转义字符_如何解决因转义字符而报错的问题(在使用python导入文件时)...
  2. 深度相机之TOF原理详解
  3. vps搭建网站服务器,vps如何架设网站服务器
  4. 前端radio单选框默认选中_「radio选中」单选框radio总结(获取值、设置默认选中值、样式) - seo实验室...
  5. 位运算实现四则运算(C++实现)
  6. spring-data-mongodb查询结果返回指定字段
  7. [转]Hadoop集群_WordCount运行详解--MapReduce编程模型
  8. SQL Server 2008R2数据库文件导入到SQL Server 2008数据库中
  9. 如何用jar命令对java工程进行打包
  10. jQuery心得5--jQuery深入了解串讲1