class Solution {
TreeNode *prev, *first, *second;
public:
void inorder (TreeNode* root) {
if (!root)
return;
inorder (root -> left);
if (prev and root -> val <= prev -> val) {
if (!first) {
first = prev;
second = root;
}
else {
second = root;
}
}
prev = root;
inorder (root -> right);
}
void recoverTree (TreeNode* root) {
prev = first = second = NULL;
inorder (root);
swap (first -> val, second -> val);
}
};
처음에는 컴파일 에러가 떴지만 해결했다.

성공!