leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

0099.cpp (618B)


0 class Solution {
1 public:
2 void recoverTree(TreeNode *root) {
3 stack<TreeNode *> st;
4 TreeNode *head = root, *prev = new TreeNode(INT_MIN), *l1 = nullptr, *l2 = nullptr;
5 while (true) {
6 while (root) {
7 st.push(root);
8 root = root->left;
9 }
10 if (st.empty()) break;
11 root = st.top(), st.pop();
12 if (root->val < prev->val) {
13 if (!l1) l1 = prev;
14 l2 = root;
15 }
16 prev = root;
17 root = root->right;
18 }
19 swap(l1->val, l2->val);
20 }
21 };