[leetcode 99] Recover Binary Search Tree
2014-12-31 22:14
429 查看
Two elements of a binary search tree (BST) are swapped by mistake.
Recover the tree without changing its structure.
Note:
A solution using O(n)
space is pretty straight forward. Could you devise a constant space solution?
Morris中序遍历
Recover the tree without changing its structure.
Note:
A solution using O(n)
space is pretty straight forward. Could you devise a constant space solution?
Morris中序遍历
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: void recoverTree(TreeNode *root) { if (!root) { return ; } pair<TreeNode*, TreeNode*> reorder; TreeNode *prev = NULL; TreeNode *cur = root; while(cur) { if (!cur->left) { detect(reorder, prev, cur); prev = cur; cur = cur->right; } else { auto node = cur->left; while (node->right && node->right != cur) { node = node->right; } if (!node->right) { node->right = cur; cur = cur->left; } else { detect(reorder, prev, cur); node->right = NULL; prev = cur; cur = cur->right; } } } swap(reorder.first->val, reorder.second->val); return ; } void detect(pair<TreeNode*, TreeNode*> &reorder, TreeNode* prev, TreeNode *cur) { if (prev && prev->val >= cur->val) { if (!reorder.first) { reorder.first = prev; } reorder.second = cur; } } };
相关文章推荐
- LeetCode99—Recover Binary Search Tree
- [Leetcode] #99 Recover Binary Search Tree
- [leetcode-99]Recover Binary Search Tree(java)
- LeetCode 99 Recover Binary Search Tree
- leetcode hard模式专杀之99. Recover Binary Search Tree
- LeetCode 99: Recover Binary Search Tree
- leetcode || 99、Recover Binary Search Tree
- leetCode 99: Recover Binary Search Tree
- leetcode99 Recover Binary Search Tree java 算法
- Leetcode 笔记 99 - Recover Binary Search Tree
- Leetcode 99 Recover Binary Search Tree
- LeetCode 99:Recover Binary Search Tree
- LeetCode(99) Recover Binary Search Tree
- (leetcode 99) Recover Binary Search Tree
- LeetCode(99) Recover Binary Search Tree
- (Leetcode 99) Recover Binary Search Tree(恢复二叉排序树BST)
- leetcode 99: Recover Binary Search Tree
- leetcode[99]Recover Binary Search Tree
- LeetCode 99 Recover Binary Search Tree(Python详解及实现)
- leetcode_99_Recover Binary Search Tree