LintCode 595. 二叉树最长连续序列 之python实现

描述

中文English

给一棵二叉树,找到最长连续路径的长度。
这条路径是指 任何的节点序列中的起始节点到树中的任一节点都必须遵循 父-子 联系。最长的连续路径必须是从父亲节点到孩子节点(不能逆序)。

您在真实的面试中是否遇到过这个题?  是

题目纠错

样例

样例1:

输入:
{1,#,3,2,4,#,#,#,5}
输出:3
说明:
这棵树如图所示
   1
    \
     3
    / \
   2   4
        \
         5
最长连续序列是3-4-5,所以返回3.

样例2:

输入:
{2,#,3,2,#,1,#}
输出:2
说明:
这棵树如图所示:
   2
    \
     3
    / 
   2    
  / 
 1
最长连续序列是2-3,而不是3-2-1,所以返回2.

 

class Solution:
    """
    @param root: the root of binary tree
    @return: the length of the longest consecutive sequence path
    """
    def longestConsecutive(self, root):
        # write your code here
        if root == None:
            return
        self.helper(root, root.val + 1, 0)
        return self.count + 1
    def helper(self, root, target, count):
        print(target)
        if root == None:
            return
        if root.val == target:
            count += 1
        else:
            count = 0
        if count > self.count:
            self.count = count
        self.helper(root.left, root.val + 1, count)
        self.helper(root.right, root.val + 1, count)
    def __init__(self):
        self.count = 0

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值