原題
給一個二叉樹,求其中最長連續(xù)序列的長度
樣例
比如,下面的樹,最長序列為3->4->5,返回3
1
\
3
/ \
2 4
\
5
解題思路
- 遞歸求解,分別向左右子樹遞歸,判斷當前值跟左兒子右兒子的值是否連續(xù),連續(xù)則+1,否則重置為1
- global變量res,不斷更新
完整代碼
class Solution(object):
def longestConsecutive(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if not root:
return 0
self.result = 0
self.helper(root, 1)
return self.result
def helper(self, root, curLen):
self.result = curLen if curLen > self.result else self.result
if root.left:
if root.left.val == root.val + 1:
self.helper(root.left, curLen + 1)
else:
self.helper(root.left, 1)
if root.right:
if root.right.val == root.val + 1:
self.helper(root.right, curLen + 1)
else:
self.helper(root.right, 1)