Recursion-687. Longest Univalue Path

Posted 抒抒说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Recursion-687. Longest Univalue Path相关的知识,希望对你有一定的参考价值。

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.

 

class Solution {
public:
    int longestUnivaluePath(TreeNode* root) {
        int lup = 0;
        if (root) dfs(root, lup);
        return lup;
    }

private:
    int dfs(TreeNode* node, int& lup) {
        int l = node->left ? dfs(node->left, lup) : 0;
        int r = node->right ? dfs(node->right, lup) : 0;
        int resl = node->left && node->left->val == node->val ? l + 1 : 0;
        int resr = node->right && node->right->val == node->val ? r + 1 : 0;
        lup = max(lup, resl + resr);
        return max(resl, resr);
    }
};

 

以上是关于Recursion-687. Longest Univalue Path的主要内容,如果未能解决你的问题,请参考以下文章

[Lintcode]124. Longest Consecutive Sequence/[Leetcode]128. Longest Consecutive Sequence

什么是 .un~ 文件,或者为什么终端中的 Vim 会生成 .un~ 文件?

Longest Palindromic Substring

JavaScript 提交un formulario hacia un popup

usaco题目分享——Longest Prefix

Longest Increasing Subsequence