# leetcode 687最长相同值路径

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.

/**
* Definition for a binary tree node.
* struct TreeNode {
*     int val;
*     TreeNode *left;
*     TreeNode *right;
*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/

/**
* 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) {
int maxpath=0;
if(root==NULL)
{
return 0;
}
countpath(root,root,maxpath);
return maxpath;

}
int countpath(TreeNode *root,TreeNode *root2,int& maxpath)
{
if(root==NULL)
return 0;
int left=countpath(root->left,root,maxpath);
int right=countpath(root->right,root,maxpath);
left=(root->left&&root->left->val==root->val)?left+1:0;
right=(root->right&&root->right->val==root->val)?right+1:0;
maxpath=maxpath>(left+right)?maxpath:(left+right);
return left>right?left:right;
}

};

• 广告
• 抄袭
• 版权
• 政治
• 色情
• 无意义
• 其他

120