Leetcode#99 Recover Binary Search Tree
中序遍历二叉搜索树,正常情况下所有元素都应该按递增排列,如果有元素被交换,则会出现前面元素大于后面的情况,称作反序。由于交换了两个节点,所以通常会有两处反序,但如果是两个相邻节点发生了交换,则只会有一次反序。
注意,如果有两次反序,前面那次一定是较大数,后面那次一定是较小数
交换的时候注意只需要交换value就行了,别傻不啦叽的去交换节点。
代码:
vector<pair<TreeNode *, TreeNode *> > nodes;
TreeNode *prev; void inorderTraverse(TreeNode *curr) {
if (!curr)
return;
inorderTraverse(curr->left);
if (prev && prev->val > curr->val)
nodes.push_back(pair<TreeNode *, TreeNode *>(prev, curr));
prev = curr;
inorderTraverse(curr->right);
} void recoverTree(TreeNode *root) {
inorderTraverse(root);
if (nodes.size() == ) {
int tmp = nodes[].first->val;
nodes[].first->val = nodes[].second->val;
nodes[].second->val = tmp;
}
if (nodes.size() == ) {
int tmp = nodes[].first->val;
nodes[].first->val = nodes[].second->val;
nodes[].second->val = tmp;
}
}
Leetcode#99 Recover Binary Search Tree的更多相关文章
- [LeetCode] 99. Recover Binary Search Tree(复原BST) ☆☆☆☆☆
Recover Binary Search Tree leetcode java https://leetcode.com/problems/recover-binary-search-tree/di ...
- [LeetCode] 99. Recover Binary Search Tree 复原二叉搜索树
Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...
- leetcode 99 Recover Binary Search Tree ----- java
Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...
- [leetcode]99. Recover Binary Search Tree恢复二叉搜索树
Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...
- 第五周 Leetcode 99. Recover Binary Search Tree (HARD)
Leetcode99 给定一个 二叉搜索树,其中两个节点被交换,写一个程序恢复这颗BST. 只想到了时间复杂度O(n)空间复杂度O(h) h为树高的解法,还没想到空间O(1)的解法. 交换的情况只有两 ...
- 【LeetCode】99. Recover Binary Search Tree 解题报告(Python)
[LeetCode]99. Recover Binary Search Tree 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/p ...
- Leetcode 笔记 99 - Recover Binary Search Tree
题目链接:Recover Binary Search Tree | LeetCode OJ Two elements of a binary search tree (BST) are swapped ...
- 【LeetCode】99. Recover Binary Search Tree
Recover Binary Search Tree Two elements of a binary search tree (BST) are swapped by mistake. Recove ...
- 【leetcode】Recover Binary Search Tree
Recover Binary Search Tree Two elements of a binary search tree (BST) are swapped by mistake. Recove ...
随机推荐
- jQuery在IE7和8下setInterval失效的问题
原因不在于setInterval,而是IE的缓存造成ajax请求页没有更新的问题. 在请求的url中加入一个随机数参数即可. var CheckPaied = function (transactio ...
- 通过Messenger与后台连接(单向操作,activity向service发送数据)
xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t ...
- spark 集合交集差集运算
intersect except是spark提供的集合差集运算, 但是要求参与运算的两个dataframe,有相同的data Schema. 如果我想从 集合1(attribute1, attribu ...
- Sublime Text 2编译python时出错
[Error 2] The system cannot find the file specified [Finished] 解决方法: 1.环境变量path添加: C:\Python32\Too ...
- 在MAC OS 下配置python + Flask ,并支持pyCharm编辑器
原创咯- flask是一个micro framework ,伸缩性很强.可以部署到openshift 的PAAS里.这个框架上手非常快.喜欢的可以试试. 若实在MAC里,python已经默认安装了.1 ...
- properties文件
properties文件也叫资源文件,以键值对的形式存放文本内容.一个properties对象代表一个资源文件 步骤:1.生成properties对象2.生成InputStream/Reader来读取 ...
- JS把函数当作参数传递
getDescPage("commonPage","/page/common/tips/tips.html",init()); $("#"+ ...
- Laravel5.1控制器小结
控制器一般存放在app\Http\Controllers目录下,所有Laravel控制器都应继承基础控制器类. 基础控制器 基础控制器例子: <?php namespace App\Http\C ...
- SQL开发技巧(二) 【转】感觉他写的很好
本文转自: http://www.cnblogs.com/marvin/p/DevelopSQLSkill_2.html 本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列 ...
- iOS学习之C语言数组
一.一维数组 数组:具有相同类型的成员组成的一组数据 1.定义 元素:数组中存放的数据成为数组的元素 数组是构造类型 用{}来给构造类型赋初始值 类型修 ...