[leetcode] Recover Binary Search Tree
Recover Binary Search Tree
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树,如果中序遍历输出,那么一定是从小到大输出的。于是就可以中序遍历二叉树,如果第一次发现一个节点的值比之前访问的节点值小,那么之前的那个节点就是被交换的第一个节点。接着向后访问,如果是第二次找到某个节点的值比之前访问的节点值小,那么这个节点就是被交换的第二个节点。这是因为第一次找到的是交换顺序中比较大的,第二次是比较小的。但是有一个问题,如果两个节点相邻就会出问题,只能找到一个。仔细分析,如果交换的是两个相邻的节点,第一个节点是访问之前的节点,第二个自然是当前访问的节点。所以,不管怎样,只要满足一个节点的值比之前访问的节点值小,被交换的第二个节点一定是当前访问的节点。
题解:
/*** Definition for binary tree* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class Solution { public:TreeNode *pre, *p, *q;void inorder(TreeNode *root) {if(!root)return;inorder(root->left);if(pre && pre->val > root->val) {if(!p)p = pre;q = root;}pre = root;inorder(root->right);}void recoverTree(TreeNode *root) {if(!root)return;pre=p=q=NULL;inorder(root);swap(p->val,q->val);} };
View Code
转载于:https://www.cnblogs.com/jiasaidongqi/p/4277067.html
[leetcode] Recover Binary Search Tree相关推荐
- LeetCode 99. Recover Binary Search Tree
LeetCode 99. Recover Binary Search Tree 刚看到这个题真是一脸懵逼啊... 博客转载自:http://www.cnblogs.com/grandyang/p/42 ...
- LeetCode: 173. Binary Search Tree Iterator
LeetCode: 173. Binary Search Tree Iterator 题目描述 Implement an iterator over a binary search tree (BST ...
- LeetCode OJ - Recover Binary Search Tree
题目: Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without chan ...
- Recover Binary Search Tree
Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...
- 99. Recover Binary Search Tree (Tree; DFS)
Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...
- Recover Binary Search Tree,恢复二叉排序树
问题描述:题意就是二叉树中有两个节点交换了,恢复结构. Two elements of a binary search tree (BST) are swapped by mistake. Recov ...
- LeetCode Closest Binary Search Tree Value II
原题链接在这里:https://leetcode.com/problems/closest-binary-search-tree-value-ii/ 题目: Given a non-empty bin ...
- LeetCode:Validate Binary Search Tree
题目链接 Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defin ...
- 第五周 Leetcode 99. Recover Binary Search Tree (HARD)
Leetcode99 给定一个 二叉搜索树,其中两个节点被交换,写一个程序恢复这颗BST. 只想到了时间复杂度O(n)空间复杂度O(h) h为树高的解法,还没想到空间O(1)的解法. 交换的情况只有两 ...
最新文章
- asp.net 后台事件掉用前台js
- ES5和ES6数组遍历方法详解
- “tel.xls.exe病毒”解决方法
- MyEclipse10.0
- 关于可变字符串StringBuffer和String的区别总结
- c# uri.host_C#| 具有示例的Uri.Host属性
- HTTP笔记-浏览器是如何识别点击的链接是下载文件还是展示页面
- Qt工作笔记-QList (链表) QVector (数组)【转载】
- c语言第4章作业,《C语言程序设第4章作业.doc
- VCIX-NV学习指南
- 【工具使用系列】关于 MATLAB Embedded Coder, 你需要知道的事
- C#.NET通用权限管理系统组件中用少数几行代码实现记录页面状态
- 对 Sea.js 进行配置 seajs.config
- ti嵌入式linux设计外包,基于嵌入式Linux的PMP系统设计与实现
- uniapp 电商小程序 置顶特效/分享特效/红包特效 简单实现效果
- 计算机网络中链路是指什么意思,什么是计算机网络中的上行链路端口?
- Oracle | 初级-第一章 Oracle概述
- 关于魔兽守卫军的改进建议
- 丰巢“羊毛”,出在快递身上,让用户买单!
- python金融编程入门_金融编程与量化金融—Python编程汇总
热门文章
- 数字建模matlab,Matlab基础及数学建模.ppt
- php实现中英文网站插件,多语言网站方案
- c hello world_C和C++使用对方编译的动态链接库
- cmake 版本 arm_在 ARM 架构服务器上编译 Greenplum6并制作rpm安装包
- IETester-IE兼容性测试工具
- 加载静态文件,父模板的继承和扩展
- python--内置函数
- 计算机网络系统--Microsoft Lync 与 腾讯通RTX 对比(转载)
- 解决jre生成错误的问题
- 〖Linux〗Kubuntu KDE开机后总是提示“system program problem detected”的解决方法