[LeetCode] Recover Binary Search Tree

来源:互联网 发布:如何推广淘宝网店 编辑:程序博客网 时间:2024/05/01 14:56
/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    TreeNode *prev;    TreeNode *n1;    TreeNode *n2;        void DFS(TreeNode *root) {        if (!root) return;                DFS(root->left);                if (prev && prev->val > root->val) {            n1 ? n2 = root : n1 = prev, n2 = root;        } else {            prev = root;        }                DFS(root->right);    }        void recoverTree(TreeNode *root) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        if (!root) return;                prev = n1 = n2 = NULL;                DFS(root);                int val = n1->val;        n1->val = n2->val;        n2->val = val;    }};


Small Case: 0ms

Large Case: 336ms


Time: O(n)

Space: O(1)

原创粉丝点击