99. Recover Binary Search Tree
来源:互联网 发布:linux while加快循环 编辑:程序博客网 时间:2024/06/05 07:17
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?
一棵排序二叉树中有两个节点被交换了,要求恢复排序二叉树。想法是通过中序遍历(因为排序二叉树中序遍历是升序的),看序列中哪里出现了乱序。这里有两种情况,如果是只有一处乱序的,说明是相邻的两个节点交换了,则把它们换过来就可以了。如果有两处乱序,则要交换两处的节点。具体实现看下面的代码。
代码:
class Solution{public:void recoverTree(TreeNode* root) {pre = new TreeNode(INT_MIN);inOrder(root);if(errs.size() == 1){swap(errs[0], pres[0]);}else if(errs.size() == 2){swap(pres[0], errs[1]);}}private:vector<TreeNode*>errs, pres;TreeNode* pre;void inOrder(TreeNode* root){if(!root) return;inOrder(root->left);if(pre->val > root->val) {pres.push_back(pre);errs.push_back(root);}pre = root;inOrder(root->right);}void swap(TreeNode* n1, TreeNode* n2){::swap(n1->val, n2->val);}};
0 0
- 99.Recover Binary Search Tree
- 99. Recover Binary Search Tree
- 99. Recover Binary Search Tree
- 99. Recover Binary Search Tree
- 99. Recover Binary Search Tree
- 99. Recover Binary Search Tree
- 99. Recover Binary Search Tree
- 99. Recover Binary Search Tree
- 99. Recover Binary Search Tree
- 99. Recover Binary Search Tree
- 99. Recover Binary Search Tree
- 99. Recover Binary Search Tree
- 99. Recover Binary Search Tree
- 99. Recover Binary Search Tree
- 99. Recover Binary Search Tree
- 99. Recover Binary Search Tree
- 99. Recover Binary Search Tree
- 99. Recover Binary Search Tree
- 如何解决外边距叠加的问题?
- leetcode 71. Simplify Path
- Python时间戳和日期的相互转换
- 配合spring 使用 tomcat连接池
- Missing artifact net.sourceforge:pinyin4j:jar:2.5.0
- 99. Recover Binary Search Tree
- 清除浮动的方式
- Java基本概念-垃圾回收机制相关
- idea配置echache.xml报错Cannot resolve file 'ehcache.xsd'
- Zabbix 检测Mysql数据库的主从同步
- Double Queue set解法
- 超级简单的Android Studio jni 实现(无需命令行)
- 查看SQL SERVER邮件发送信息
- c++ Primer Plus(第六版)第七章习题,写代码之路