Leetcode 99. Recover Binary Search Tree O(1)
来源:互联网 发布:淘宝怎样付款 编辑:程序博客网 时间:2024/05/16 14:56
题目中要求用constant space去结题,那就不能使用中序遍历类似的递归写法,因为这些的空间复杂度平均水平是
然后结合中序遍历的结题思路,左子树的最大值要小于根节点和右子树的值。
/** * Definition for a binary tree node. * 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* cur = root,* pre = nullptr; while(cur) { if(cur->left == nullptr) { iserror(cur); last = cur; //printf("%d\n", last->val); cur = cur->right; } else { pre = cur->left; while(pre->right != nullptr && pre->right != cur) pre = pre->right; if(pre->right == nullptr) { pre->right = cur; cur = cur->left; } else { pre->right = nullptr; iserror(cur); last = cur; //printf("%d\n", last->val); cur = cur->right; } } } swap(node1->val, node2->val); }private: TreeNode* node1 = nullptr; TreeNode* node2 = nullptr; TreeNode* last = new TreeNode(INT_MIN); void iserror(TreeNode* cur) { //printf("%d %d\n", last->val, cur->val); if(!node1 && last->val > cur->val) node1 = last; if( node1 && last->val > cur->val) node2 = cur; }};
阅读全文
0 0
- Leetcode 99. Recover Binary Search Tree O(1)
- 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
- 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
- [LeetCode] 99. Recover Binary Search Tree
- leetcode 99. Recover Binary Search Tree
- leetcode 99. Recover Binary Search Tree
- poj 1734(最小环+路径)
- 编译和链接基础问题
- 4.this关键字
- cocos2d中缓动action的UI示意
- python从入门到实践:9-6 冰淇淋小店
- Leetcode 99. Recover Binary Search Tree O(1)
- 我的项目管理模型
- Android实现来电和去电的监听
- 稀疏矩阵存储格式总结+存储效率对比:COO,CSR,DIA,ELL,HYB
- Matlab 实现字符串分割(split)
- Akka(20): Stream:异步运算,压力缓冲-Async, batching backpressure and buffering
- Python 微博画像分析
- VCC、VDD、VDDA、VSS
- Ubuntu16.04 安装anaconda3