zoukankan      html  css  js  c++  java
  • Binary Tree Longest Consecutive Sequence -- LeetCode

    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.

    思路:递归。时间复杂度O(N)。

     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 help(TreeNode *root, int &count) {
    13         if (root == NULL) return 0;
    14         int leftCount = help(root->left, count);
    15         int rightCount = help(root->right, count);
    16         int res = 1;
    17         if (root->left && root->val + 1 == root->left->val)
    18             res = 1 + leftCount;
    19         if (root->right && root->val + 1 == root->right->val)
    20             res = std::max(res, 1 + rightCount);
    21         count = std::max(count, res);
    22         return res;
    23     }
    24     int longestConsecutive(TreeNode* root) {
    25         int count = 0;
    26         help(root, count);
    27         return count;
    28     }
    29 };
  • 相关阅读:
    Spring面试,IoC和AOP的理解
    WEB打印(jsp版)
    Spring事务管理机制的实现原理-动态代理
    spring面试题
    oracle PLSQL基础学习
    oracle创建表空间
    WM_CONCAT字符超过4000的处理办法
    Oracle 数据泵使用详解
    Oracle 数据泵详解
    linux下启动oracle
  • 原文地址:https://www.cnblogs.com/fenshen371/p/5824422.html
Copyright © 2011-2022 走看看