LeetCode: Recover Binary Search Tree
2013-04-20 02:52
363 查看
这题想了很久,看了网上答案,这段代码精髓在于findpos第一个pos是在他下一个node函数里才被发现的,因为第一个pos->val是变大了,所以p是pre,而第二个pos是在他自己本身的函数里被发现的,因为第二个pos->val是变小了,所以就是root。
C#
View Code
/** * 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 findpos(TreeNode *root, TreeNode * &pre, TreeNode * &p, TreeNode * &q) { if (!root) return; findpos(root->left, pre, p, q); if (pre && pre->val > root->val) { if (!p) p = pre; q = root; } pre = root; findpos(root->right, pre, p, q); } void recoverTree(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function TreeNode *p, *q, *pre; pre = p = q = NULL; findpos(root, pre, p, q); int tmp = p->val; p->val = q->val; q->val = tmp; } };
C#
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; * public TreeNode right; * public TreeNode(int x) { val = x; } * } */ public class Solution { public void RecoverTree(TreeNode root) { TreeNode p = null, q = null, pre = null; findpos(root, ref pre, ref p, ref q); int tmp = p.val; p.val = q.val; q.val = tmp; } public void findpos(TreeNode root, ref TreeNode pre, ref TreeNode p, ref TreeNode q) { if (root == null) return; findpos(root.left, ref pre, ref p, ref q); if (pre != null && pre.val > root.val) { if (p == null) p = pre; q = root; } pre = root; findpos(root.right, ref pre, ref p, ref q); } }
View Code
相关文章推荐
- [LeetCode] Recover Binary Search Tree
- leetcode — recover-binary-search-tree
- leetcode 099 —— Recover Binary Search Tree
- LeetCode: Recover Binary Search Tree
- 【leetcode】Recover Binary Search Tree
- [Leetcode]Recover Binary Search Tree
- [LeetCode]Recover Binary Search Tree
- [LeetCode] Recover Binary Search Tree
- leetcode:Recover Binary Search Tree
- [LeetCode] Recover Binary Search Tree
- 4.6 leetcode -6 recover-binary-search-tree
- LeetCode "Recover Binary Search Tree"
- LeetCode099 Recover Binary Search Tree
- Recover Binary Search Tree -- leetcode
- Leetcode: Recover Binary Search Tree
- [LeetCode]Recover Binary Search Tree
- LeetCode -- Recover Binary Search Tree 详细解答
- (Leetcode 99) Recover Binary Search Tree(恢复二叉排序树BST)
- leetcode: Recover Binary Search Tree
- [leetcode] Recover Binary Search Tree