LeetCode 0549. Binary Tree Longest Consecutive Sequence II Solution in Java, C++, Python & Go | Explanation + Code

CoderIndeed
0
0549. Binary Tree Longest Consecutive Sequence II

Description

Given the root of a binary tree, return the length of the longest consecutive path in the tree.

A consecutive path is a path where the values of the consecutive nodes in the path differ by one. This path can be either increasing or decreasing.

  • For example, [1,2,3,4] and [4,3,2,1] are both considered valid, but the path [1,2,4,3] is not valid.

On the other hand, the path can be in the child-Parent-child order, where not necessarily be parent-child order.

 

Example 1:

Input: root = [1,2,3]
Output: 2
Explanation: The longest consecutive path is [1, 2] or [2, 1].

Example 2:

Input: root = [2,1,3]
Output: 3
Explanation: The longest consecutive path is [1, 2, 3] or [3, 2, 1].

 

Constraints:

  • The number of nodes in the tree is in the range [1, 3 * 104].
  • -3 * 104 <= Node.val <= 3 * 104

Solutions

Solution 1

PythonJavaC++Go
# 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 longestConsecutive(self, root: TreeNode) -> int: def dfs(root): if root is None: return [0, 0] nonlocal ans incr = decr = 1 i1, d1 = dfs(root.left) i2, d2 = dfs(root.right) if root.left: if root.left.val + 1 == root.val: incr = i1 + 1 if root.left.val - 1 == root.val: decr = d1 + 1 if root.right: if root.right.val + 1 == root.val: incr = max(incr, i2 + 1) if root.right.val - 1 == root.val: decr = max(decr, d2 + 1) ans = max(ans, incr + decr - 1) return [incr, decr] ans = 0 dfs(root) return ans(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !