549. Binary Tree Longest Consecutive Sequence II
Input:
1
/ \
2 3
Output: 2
Explanation: The longest consecutive path is [1, 2] or [2, 1].Input:
2
/ \
1 3
Output: 3
Explanation: The longest consecutive path is [1, 2, 3] or [3, 2, 1].// Bottom Up
pair<int, int> helper(TreeNode* node, TreeNode* parent, int& res) {
if (!node) return {0, 0};
auto left = helper(node->left, node, res), right = helper(node->right, node, res);
res = max({res, left.first + right.second + 1, left.second + right.first + 1});
int inc = 0, dec = 0;
if (node->val == parent->val + 1)
inc = max(left.first, right.first) + 1;
else if (node->val + 1 == parent->val)
dec = max(left.second, right.second) + 1;
return {inc, dec};
}
int longestConsecutive(TreeNode* root) { // time: O(n); space: O(n)
int res = 0;
helper(root, root, res);
return res;
}Last updated