https://www.geeksforgeeks.org/batch/gfg-160-problems/track/tree-gfg-160/problem/fixed-two-nodes-of-a-bst
class Solution {
private :
Node* prev;
Node* first;
Node* sec;
void inorder( Node* root){
if(!root) return;
inorder(root->left);
if(prev && prev->data > root->data){
if(!first){
first = prev;
}
sec = root;
}
prev=root;
inorder(root->right);
}
public:
void correctBST(Node* root) {
// add code here.
prev=first=sec=nullptr;
inorder(root);
swap(first->data , sec->data);
}
};
Time & Space Complexity:
- Time: O(n) – full in-order traversal.
- Space:
- O(h) recursion stack (h = tree height)
- No extra space for storing the entire traversal.