[LeetCode] Binary Tree Longest Consecutive Sequence-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

[LeetCode] Binary Tree Longest Consecutive Sequence

简介: Problem Description: Given a binary tree, find the length of the longest consecutive sequence path. The path refers to any sequence of nodes from so...

Problem Description:

Given a binary tree, find the length of the longest consecutive sequence path.

The path refers to any sequence of nodes from some starting node to any node in the tree along the parent-child connections. The longest consecutive path need to be from parent to child (cannot be the reverse).

For example,

   1
    \
     3
    / \
   2   4
        \
         5

Longest consecutive sequence path is 3-4-5, so return 3.

   2
    \
     3
    / 
   2    
  / 
 1

Longest consecutive sequence path is 2-3,not3-2-1, so return 2.


This post shares an elegant C++ solution, just in 4 lines. The code is as follows.

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     int longestConsecutive(TreeNode* root) {
13         return longest(root, NULL, 0);
14     }
15 private:
16     int longest(TreeNode* now, TreeNode* parent, int len) {
17         if (!now) return len;
18         len = (parent && now->val == parent->val + 1) ? len + 1 : 1;
19         return max(len, max(longest(now->left, now, len), longest(now->right, now, len)));
20     }
21 };

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章
最新文章
相关文章