Skip to content

Commit 8ef0e4d

Browse files
committed
Create binary-tree-longest-consecutive-sequence.cpp
1 parent b319f33 commit 8ef0e4d

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Time: O(n)
2+
// Space: O(h)
3+
4+
/**
5+
* Definition for a binary tree node.
6+
* struct TreeNode {
7+
* int val;
8+
* TreeNode *left;
9+
* TreeNode *right;
10+
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
11+
* };
12+
*/
13+
class Solution {
14+
public:
15+
int longestConsecutive(TreeNode* root) {
16+
int max_len = 0;
17+
longestConsecutiveHelper(root, &max_len);
18+
return max_len;
19+
}
20+
21+
int longestConsecutiveHelper(TreeNode *root, int *max_len) {
22+
if (!root) {
23+
return 0;
24+
}
25+
26+
const int left_len = longestConsecutiveHelper(root->left, max_len);
27+
const int right_len = longestConsecutiveHelper(root->right, max_len);
28+
29+
int cur_len = 1;
30+
if (root->left && root->left->val == root->val + 1) {
31+
cur_len = max(cur_len, left_len + 1);
32+
}
33+
if (root->right && root->right->val == root->val + 1) {
34+
cur_len = max(cur_len, right_len + 1);
35+
}
36+
*max_len = max(*max_len, max(cur_len, max(left_len, right_len)));
37+
return cur_len;
38+
}
39+
};

0 commit comments

Comments
 (0)