zoukankan      html  css  js  c++  java
  • [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 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 };
  • 相关阅读:
    List接口之ArrayList
    锁定线程:同步方法
    锁定线程:同步块
    通过Lambda表达式实现多线程
    通过实现Runnable接口来实现多线程
    通过继承Thread类实现多线程
    super关键字的经典案例
    Merge Two Sorted Lists
    Remove Element
    Remove Duplicates from Sorted List
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4923745.html
Copyright © 2011-2022 走看看