您的位置:首页 > 产品设计 > UI/UE

【LeetCode】687.Longest Univalue Path(Easy)解题报告

2017-11-22 09:39 375 查看
【LeetCode】687.Longest Univalue Path(Easy)解题报告

题目地址:https://leetcode.com/problems/longest-univalue-path/description/

题目描述:

  Given a binary tree, find the length of the longest path where each node in the path has the same value. This path may or may not pass through the root.

  Note: The length of path between two nodes is represented by the number of edges between them.

Example 1:
Input:
5
/ \
4   5
/ \   \
1   1   5
Output: 2
Example 2:
Input:
1
/ \
4   5
/ \   \
4   4   5
Output:  2


  Note: The given binary tree has not more than 10000 nodes. The height of the tree is not more than 1000.

  要有一种大局观,一个方法给我返回单独子树的最大长度,然后自己比较根节点和左右子树根节点的值就可以了。

Solution:

/**
* Definition for a binary tree node.
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode(int x) { val = x; }
* }
Time complexity: O(n)
Space complexity: O(logn)
*/
class Solution {
public int res = 0;
public int longestUnivaluePath(TreeNode root) {
caculate(root);
return res;
}

//返回单独子树的最大长度
public int caculate(TreeNode root){
if(root==null){
return 0;
}
int leftCount = caculate(root.left);
int rightCount = caculate(root.right);
int left=0,right=0;
if(root.left!=
ae36
null && root.left.val == root.val){
left = leftCount + 1;
}
if(root.right!=null && root.right.val == root.val){
right = rightCount + 1;
}
res = Math.max(res,left+right);
//返回一边子树的最大值
return Math.max(left,right);
}
}


Date:2017年11月22日
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode