leetcode687
/**
* 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) return ;
int max = ;
dfs(root, max);
return max;
} int dfs(TreeNode* root, int & max) {
int l = , r = ; if (root->left && root->left->val == root->val)
l = + dfs(root->left, max);
else if (root->left)
dfs(root->left, max); if (root->right && root->right->val == root->val)
r = + dfs(root->right, max);
else if (root->right)
dfs(root->right, max); if (l+r > max)
max = l+r; return (l > r) ? l : r;
}
};
补充一个python的实现:
class Solution:
def __init__(self):
self.path = def lastOrder(self,root):
if root == None:
return
left = self.lastOrder(root.left)
right = self.lastOrder(root.right)
leftpath,rightpath = ,
if root.left != None:
leftpath = left + if root.val == root.left.val else
if root.right != None:
rightpath = right + if root.val == root.right.val else
self.path = max(self.path,leftpath+rightpath)
return max(leftpath,rightpath) def longestUnivaluePath(self, root: TreeNode) -> int:
self.lastOrder(root)
return self.path
leetcode687的更多相关文章
- [Swift]LeetCode687. 最长同值路径 | Longest Univalue Path
Given a binary tree, find the length of the longest path where each node in the path has the same va ...
- LeetCode--687. 最长同值路径
题目描述:给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值.这条路径可以经过也可以不经过根节点.注意:两个节点之间的路径长度由它们之间的边数表示. 示例1:输入: 5 / \ 4 5 / ...
- Leetcode687.Longest Univalue Path最长同值路径
给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们之间的边数表示. 示例 1: 输入: 5 / \ 4 5 / ...
随机推荐
- Python IDE in Sublime
(最近换了电脑,然后忘了把 ST 的配置搬过来,所以重新折腾了一遍 Sublime 中的 Python 环境配置) 以下插件均通过 Package Control 安装. SublimeREPL 快捷 ...
- 【2018.06.26NOIP模拟】T3节目parade 【支配树】*
[2018.06.26NOIP模拟]T3节目parade 题目描述 学校一年一度的学生艺术节开始啦!在这次的艺术节上总共有 N 个节目,并且总共也有 N 个舞台供大家表演.其中第 i 个节目的表演时间 ...
- 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包
MSBuild 的 Task 为我们扩展项目的编译过程提供了强大的扩展性,它使得我们可以用 C# 语言编写扩展:利用这种扩展性,我们可以为我们的项目定制一部分的编译细节.NuGet 为我们提供了一种自 ...
- 《DSP using MATLAB》示例Example 9.5
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- 接口测试框架——第三篇:发送(requests)
把下面的代码放在requests_module.py文件中 # coding: utf-8 import requests import logging from requests.exception ...
- RabbitMQ消息队列———安装(一)
一.RabbitMQ队列 不同进程间的通信,简称IPC.不同的进程间的通信,可以基于队列解决,将生产者和消费者进行解耦,中间的队列作为其桥梁.RabbitMQ是一个在AMQP基础上完整的,可复用的企业 ...
- sysbench 1.0.9 mysql 压测工具安装使用
备注: 安装比较简单,可以使用源码或者使用yum 进行安装,本次测试使用yum 注意1.0 之后版本与老版本改动比较大,好多地方都有修改,本次测试使用 的mysql 使用docker ...
- 常见企业IT支撑【5、内网DNS cache轻量服务dnsmasq】
可参考http://www.centoscn.com/CentosServer/dns/2014/0113/2355.html 布署keepalive高可用方式 此方案只适合小型企业,规模少的情况下使 ...
- struts2学习(15)struts2防重复提交
一.重复提交的例子: 模拟一种情况,存在延时啊,系统比较繁忙啊啥的. 模拟延迟5s钟,用户点了一次提交,又点了一次提交,例子中模拟这种情况: 这样会造成重复提交: com.cy.action.St ...
- 汇编_指令_CS与DS的区别
cs是值cpu执行的当前指令的段地址,ds是数据开始的段地址. CS是告诉CPU,去哪个位置找内容当成指令去执行:DS是告诉CPU,去哪个位置找内容当成数据被使用. datastring =ds co ...