[
tree
bfs
dfs
]
Leetcode 0298. Binary Tree Longest Consecutive Sequence
Problem statement
https://leetcode.com/problems/binary-tree-longest-consecutive-sequence/
Solution
Just traverse our tree with dfs (or bfs), where dfs(node) is the longest consecutive sequence for given node. Each time run dfs for left and right subtrees, and then update result for node, so we have postorder traversal here.
Complexity
Time complexity is $O(n)$, space complexity is $O(h)$.
Code
class Solution:
def longestConsecutive(self, root):
self.ans = 0
def dfs(node):
out = 1
for child in [node.left, node.right]:
if not child: continue
cand = dfs(child)
if child.val == node.val + 1:
out = max(cand + 1, out)
self.ans = max(out, self.ans)
return out
dfs(root)
return self.ans