MCPcopy Create free account
hub / github.com/Ainevsia/Leetcode-Rust / Solution

Class Solution

99. Recover Binary Search Tree/Solution.cpp:21–50  ·  view source on GitHub ↗

never use magic number !

Source from the content-addressed store, hash-verified

19
20// never use magic number !
21class Solution {
22private:
23 TreeNode * sw1;
24 TreeNode * sw2;
25 TreeNode * prev;
26public:
27 Solution():sw1(NULL), sw2(NULL), prev(new TreeNode(1 << 31)) {}
28
29 void traverse(TreeNode * root) {
30 if (root == NULL) return ;
31 traverse(root->left);
32 // in-order traverse
33 // edge case stack overfloe
34 if (sw1 == NULL and prev->val >= root->val and root->val != (1 << 31)) sw1 = prev;
35 if (sw1 != NULL and prev->val >= root->val) sw2 = root;
36 prev = root;
37 traverse(root->right);
38 }
39
40 void swap() {
41 int tmp = sw1->val;
42 sw1->val = sw2->val;
43 sw2->val = tmp;
44 }
45
46 void recoverTree(TreeNode* root) {
47 traverse(root);
48 swap();
49 }
50};
51
52
53int main() {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected