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 };