Skip to content

Commit 19be55f

Browse files
Update 99_Recover Binary Search Tree.cpp
1 parent 8ded9b2 commit 19be55f

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

Binary Tree/99_Recover Binary Search Tree.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,41 @@ class Solution {
8888
change_tree(root,sample_tree);
8989
}
9090
};
91+
92+
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
93+
94+
/**
95+
* Definition for a binary tree node.
96+
* struct TreeNode {
97+
* int val;
98+
* TreeNode *left;
99+
* TreeNode *right;
100+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
101+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
102+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
103+
* };
104+
*/
105+
class Solution {
106+
public:
107+
108+
TreeNode* first = NULL;
109+
TreeNode* second = NULL;
110+
TreeNode* prev = new TreeNode(INT_MIN);
111+
112+
void Inorder(TreeNode* root){
113+
if(root == NULL) return;
114+
115+
Inorder(root->left);
116+
117+
if(first == NULL && prev->val > root->val) first = prev;
118+
if(first != NULL && prev->val > root->val) second = root;
119+
prev = root;
120+
121+
Inorder(root->right);
122+
}
123+
124+
void recoverTree(TreeNode* root) {
125+
Inorder(root);
126+
swap(first->val, second->val);
127+
}
128+
};

0 commit comments

Comments
 (0)