leetcode--Recover Binary Search Tree
来源:互联网 发布:大数据目前发展情况 编辑:程序博客网 时间:2024/05/21 17:46
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?
confused what "{1,#,2,3}"
means? > read more on how binary tree is serialized on OJ.
OJ's Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
1 / \ 2 3 / 4 \ 5
The above binary tree is serialized as "{1,2,3,#,#,4,#,#,5}"
.
题意:某排序二叉树的两个节点交换了位置,请找出这两个节点,并且将交换这两个节点的值,从而恢复排序二叉树。要求使用常数空间。
分类:二叉树
解法1:题目要求只能使用常数空间,我们自然会想到使用递归遍历,而不是非递归。
由于排序二叉树的中序遍历,可以得到这个从小到大排序的数组,我们可以使用这个性质。在中序遍历过程中,发现某个节点不按顺序,就标记下来。
但是顺序错误是需要跟之前的节点比较大小的,所以在递归过程中,我们要保留当前节点的前一个节点的指针(指按中序遍历顺序的前后)。
这时有两种情况,一种是前后两个节点交换了位置(指按中序遍历顺序的前后),这时我们只能找到一个位置错误。
因为例如对于顺序{1,3,2,4},3,2换了位置,但是只有当pre指向3,cur指向2的时候比较,才回发现位置异常,其他情况没有,也就是说只出现一次位置异常。
这种情况,我们交换这两个节点就可以了。
对于第二种情况,就是两个节点距离较远,例如{1,6,3,4,5,2}
这时对于{6,3}会发生一次异常,{5,2}会发生一次异常,我们应该保留第一次异常的pre,保留第二次异常的cur
然后再交换这两个节点的值。
下面来看代码:
原文链接http://blog.csdn.net/crazy__chen/article/details/47184139
- 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
- Android开发--与后台通信(一)--API数据获取
- Js 执行上下文
- Java对象的序列化与反序列化那点事
- python爬虫----简单的抓取斗鱼弹幕
- Android View
- leetcode--Recover Binary Search Tree
- 【unity 5学习记录】 可编辑地形 网格 原理讲解 17.8.8
- CODE大全告诉你java是否开始没落了
- GAN公式原理推到
- Spring(六)SSM(Spring3+Struts2+MyBatis+JDK1.7)
- js事件实现通过键盘移动图片
- Nginx配置参数详解
- HTML的TextArea标记跟随文本内容自动设置高度
- leetcode--Lowest Common Ancestor of a Binary Search Tree