leetcode No99. Recover Binary Search Tree
来源:互联网 发布:端口数据监听工具 编辑:程序博客网 时间:2024/06/06 08:51
Question
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?
BST有两个元素顺序错了,把BST恢复成正确的
Algorithm
BST中序遍历的结果应该是顺序的,那么找到不是顺序的两个点交换就行。有可能只找到一个,这时交换此节点和它前面的一个节点。
二叉树的中序遍历:http://blog.csdn.net/u011391629/article/details/52201639
Accepted Code
class Solution {public: void swap(TreeNode* x1,TreeNode* x2){ int tmp=x1->val; x1->val=x2->val; x2->val=tmp; } void recoverTree(TreeNode* root) { stack<TreeNode*> s; TreeNode* newRoot=root; TreeNode* x1=NULL; TreeNode* x2=NULL; TreeNode* pre=NULL; while(!s.empty() || root){ while(root){ s.push(root); root=root->left; } if(!s.empty()){ root=s.top(); s.pop(); if(pre!=NULL && (pre->val>root->val)){ if(x1==NULL){ x1=pre; x2=root; } else{ x2=root; } } pre=root; root=root->right; } } swap(x1,x2); }};
阅读全文
0 0
- leetcode No99. 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
- ETL调优的一些分享
- Hibernate相关内容
- Gilde原码解析
- c/c++ Indexer has encountered a problem
- 【0000】我的软件
- leetcode No99. Recover Binary Search Tree
- 自然语言处理如何入门
- pat -- 二叉树的遍历 (浙大的PAT)
- redis的使用
- Java中的字符串相加,内存怎么分配?
- mysql1449错误
- iOS GCD & NSOperation 对比~笔记
- c++builder通过指定的分隔符格式化一个日期字符串
- 随笔