Skip to content

Commit e44bacd

Browse files
✨ Day 31; Week 5 ✔️
1 parent fb54fe3 commit e44bacd

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,11 @@
4545
6. [Linked List Cycle II](https://leetcode.com/explore/challenge/card/october-leetcoding-challenge/562/week-4-october-22nd-october-28th/3509/) ➡️ [CPP Solution](Week4/detectCycle.cpp)
4646
7. [Summary Ranges](https://leetcode.com/explore/challenge/card/october-leetcoding-challenge/562/week-4-october-22nd-october-28th/3510/) ➡️ [CPP Solution](Week4/summaryRanges.cpp)
4747

48-
## Week 5 🚧
48+
## Week 5
4949

5050
1. [Maximize Distance to Closest Person](https://leetcode.com/explore/challenge/card/october-leetcoding-challenge/563/week-5-october-29th-october-31st/3512/) ➡️ [CPP Solution](Week5/maxDistToClosest.cpp)
5151
2. [Number of Longest Increasing Subsequence](https://leetcode.com/explore/challenge/card/october-leetcoding-challenge/563/week-5-october-29th-october-31st/3513/) ➡️ [CPP Solution](Week5/findNumberOfLIS.cpp)
52+
3. [Recover Binary Search Tree](https://leetcode.com/explore/challenge/card/october-leetcoding-challenge/563/week-5-october-29th-october-31st/3514/) ➡️ [CPP Solution](Week5/recoverTree.cpp)
5253

5354
## Other Challenges 💪
5455

Week5/recoverTree.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* struct TreeNode {
4+
* int val;
5+
* TreeNode *left;
6+
* TreeNode *right;
7+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
8+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
9+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
10+
* };
11+
*/
12+
class Solution {
13+
public:
14+
TreeNode* first = NULL;
15+
TreeNode* second = NULL;
16+
TreeNode* prev = new TreeNode(INT_MIN);
17+
18+
void recoverTree(TreeNode* root) {
19+
inorder(root);
20+
21+
int temp = first->val;
22+
first->val = second->val;
23+
second->val = temp;
24+
}
25+
26+
void inorder(TreeNode* root) {
27+
if(root == NULL) return;
28+
29+
inorder(root->left);
30+
31+
if(first == NULL && prev->val > root->val)
32+
first = prev;
33+
34+
if(first != NULL && prev->val > root->val)
35+
second = root;
36+
37+
prev = root;
38+
39+
inorder(root->right);
40+
}
41+
};

0 commit comments

Comments
 (0)