一、题目描述

给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。

注意:两个节点之间的路径长度由它们之间的边数表示。

二、示例

示例 1:

输入:

      5/ \4   5/ \   \1   1   5

输出:

2

示例 2:

输入:

      1/ \4   5/ \   \4   4   5

输出:

2

注意: 给定的二叉树不超过10000个结点。 树的高度不超过1000。

三、分析

每个子树的最长同值路径为:其左子树的最长同值路径+右子树的最长同值路径。
递归求解。对于某个节点,判断其左孩子的值是否与其相等,相等则left等于1+左子树的最长同值路径,否则直接处理左子树,对右子树做相同计算。计算leftright之和,更新最大值,返回leftright的最大值。

四、实现

/*** 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. 最长同值路径相关推荐

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

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

  2. LeetCode 687. 最长同值路径(二叉树,递归)

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

  3. Leetcode 687.最长同值路径

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

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

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

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

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

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

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

  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 674. 最长连续递增序列 (滑动窗口 计数法)

    LeetCode 674. 最长连续递增序列 滑动窗口 右边界不断往右移动 左边界收缩条件:当右边界的值小于等于其左边的值时(递减) 左边界收缩到右边界当前位置 class Solution {pub ...

最新文章

  1. iOS12系统应用发送普通邮实现发送
  2. 千字谏言!Python入门:这两点绝对不能偷懒!否则工作后必后悔
  3. 浏览器屏蔽flash视频广告
  4. tensorflow之安装tensorboard
  5. 关联规则(Apriori、FP-grpwth)
  6. 读取文本节点_Python文本处理教程(2)
  7. 计算机中键盘可以共享吗,两个电脑怎么共用一个键盘
  8. 虚拟服务器网络无法连接,VMware虚拟机XP系统网络无法连接受限制或无连接解决方法...
  9. yum源的三种安装配置方式,总有一款适合你
  10. 编程猫 python教材_编程猫全新推出系列编程教材补足编程系统性教学内容,教育部评审专家作序推荐...
  11. 5-IP地址、端口、DNS服务器
  12. 电路里的希腊字母读音
  13. 和cool一起学前端----第八天
  14. 2020年每个Web开发人员必须知道的9种Web技术
  15. cocos2dx iphoneX 游戏适配
  16. 阿里云客服联系方式汇总
  17. STM32 (基于HAL库) 硬件IIC读写任意AT24CXX芯片
  18. [学习笔记]模拟退火
  19. 【R语言】必学包之dplyr包
  20. 手机故障手机通讯录被删除了怎么恢复

热门文章

  1. PLSQL远程连接oracle数据库
  2. EXC中时间控件的使用
  3. c语言天花板和地板,父母有两种,一种是天花板,一种是地板,你是孩子的啥?...
  4. linux mv 环境变量,linux环境变量 cp mv 以及文档查看的几个命令
  5. webapi输出炜json_WebApi返回Json格式
  6. git 怎么读_python3中开源代码怎么读?
  7. linux开发板加快开机速度,readahead加速Linux开机速度
  8. python什么是数据结构_〖Python〗-- 数据结构
  9. java连服务器mysql报错_tomcat程序连接服务器mysql数据库报错
  10. kafka linux客户端,kafka linux 客户端操作命令