---
title: "298. Binary Tree Longest Consecutive Sequence"
url: "https://laigary.com/interview/coding/298-binary-tree-longest-consecutive-sequence"
type: "note"
section: "coding"
date: "2024-07-21"
updated: "2024-07-21"
tags: ["Tree", "Backtrack"]
---

# 298. Binary Tree Longest Consecutive Sequence

[298\. Binary Tree Longest Consecutive Sequence](https://leetcode.com/problems/binary-tree-longest-consecutive-sequence/)

參考：[257\. Binary Tree Paths](/interview/coding/257-binary-tree-paths)

```python
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:

    def __init__(self):
        self.res = 0

    def longestConsecutive(self, root: Optional[TreeNode]) -> int:
        
        def traverse(node, curr):
            if not node:
                return
            if not node.left and not node.right:
                if len(curr) == 0:
                    self.res = max(self.res, 1)
                    return
                if node.val == curr[-1] + 1:
                    self.res = max(self.res, len(curr) + 1)
                else:
                    self.res = max(self.res, len(curr))
                return
            
            if len(curr) == 0:
                curr.append(node.val)
            else:
                if node.val == curr[-1] + 1:
                    curr.append(node.val)
                else:
                    curr = [node.val]
            self.res = max(self.res, len(curr))                    
            traverse(node.left, curr)
            traverse(node.right, curr)
            curr.pop()
        
        traverse(root, [])

        return self.res

```
