LeetCode: Recover Binary Search Tree
来源:互联网 发布:阿尔及利亚地图软件 编辑:程序博客网 时间:2024/04/30 00:44
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?
/** * 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) { inOrder(root); int temp = first->val; first->val = second->val; second->val = temp; } private:TreeNode *first;TreeNode *second;TreeNode *pre; void inOrder(TreeNode* root) { if(root == NULL) return; inOrder(root->left); if(pre == NULL) pre = root; else { if(root-> val <= pre->val) { if(first == NULL) first = pre; second = root; } pre = root; } inOrder(root->right); }};
Round 2:
/** * 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) { TreeNode *first = NULL, *second = NULL, *pre = NULL; inorder(root, &first, &second, &pre); int temp = first->val; first->val = second->val; second->val = temp; }private: void inorder(TreeNode* root, TreeNode **first, TreeNode **second, TreeNode **pre) { if(root == NULL) return; inorder(root->left, first, second, pre); if(*pre == NULL) { *pre = root; } else { if(root->val <= (*pre)->val) { if(*first == NULL) *first = *pre; *second = root; } *pre = root; } inorder(root->right, first, second, pre); }};
0 0
- 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
- [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
- [LeetCode] Recover Binary Search Tree
- 【Leetcode】Recover Binary Search Tree
- Leetcode Recover Binary Search Tree
- LeetCode | Recover Binary Search Tree
- C语言、C++面试题(附答案)
- Leetcode: Unique Paths
- Android onTouchEvent, onClick及onLongClick的调用机制
- Java设计模式菜鸟系列(二)观察者模式建模与实现
- easyUI中combobox的使用心得
- LeetCode: Recover Binary Search Tree
- 第六届省赛 E Internal Rate of Return(UVA 11881)二分求根
- NYOJ 298 点的变换(矩阵快速幂)
- PAT 2-13 两个有序序列的中位数(C语言实现)
- Zoj 3535 Gao the String II (AC自动机+dp)
- MapReduce 编程 系列十 使用HashPartitioner来调节Reducer的计算负载
- 复分析中的欧拉恒等式
- 【人脸识别】人脸识别必读论文
- ACdream Andrew Stankevich's Contest (2) 哈夫曼树