【LeetCode 99】Recover Binary Search Tree
Two elements of a binary search tree (BST) are swapped by mistake.
Recover the tree without changing its structure.
题意:
一颗二叉搜索树中有2个结点的元素被误换了,要求恢复二叉搜索树的原状。
思路:
中序遍历BST,若发现一次逆序,说明是两个相连结点的误换,直接交换结点的值;若发现两次逆序,则为不相连的两个结点误换,交换错误的结点即可。用一个变量保存先前结点的状态,若发生逆序则记录,空间复杂度为常量。
C++:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public: vector<TreeNode* > errs;
TreeNode *preNode; void rec(TreeNode *root)
{
if(root->left != )
rec(root->left); if(preNode != && root->val < preNode->val)
{
errs.push_back(preNode);
errs.push_back(root);
} preNode = root; if(root->right != )
rec(root->right);
} void recoverTree(TreeNode* root) {
if(root == )
return ; preNode = ; rec(root); int temp = , index = ; if(errs.size() == )
index = ; temp = errs[]->val;
errs[]->val = errs[index]->val;
errs[index]->val = temp;
}
};
【LeetCode 99】Recover Binary Search Tree的更多相关文章
- 【LeetCode练习题】Recover Binary Search Tree
		
Recover Binary Search Tree Two elements of a binary search tree (BST) are swapped by mistake. Recove ...
 - 【LeetCode OJ】Recover Binary Search Tree
		
Problem Link: https://oj.leetcode.com/problems/recover-binary-search-tree/ We know that the inorder ...
 - 【LeetCode练习题】Validate Binary Search Tree
		
Validate Binary Search Tree Given a binary tree, determine if it is a valid binary search tree (BST) ...
 - 【LeetCode OJ】Validate Binary Search Tree
		
Problem Link: https://oj.leetcode.com/problems/validate-binary-search-tree/ We inorder-traverse the ...
 - 【leetcode】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
		
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 chang ...
 - LeetCode OJ:Recover Binary Search Tree(恢复二叉搜索树)
		
Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...
 - LeetCode具体分析 :: Recover Binary Search Tree [Tree]
		
Recover the tree without changing its structure. Note: A solution using O(n) space is pretty straigh ...
 
随机推荐
- IE插件DebugBar如何安装及使用
			
DebugBar插件是一款功能很强大的IE插件,用户可以从各个不同的角度剖析Web页面内部,包括页面 详细代码.CSS样式表.所有链接.所有图片代码.脚本信息等等,不管你是编程大虾还是IT新人都和适合 ...
 - LeeCode 1-Two Sum
			
Two Sum Total Accepted: 125096 Total Submissions: 705262 Question Solution Given an array of integer ...
 - ASP.Net WebForm学习笔记:一、aspx与服务器控件探秘
			
作者:周旭龙 出处:http://edisonchou.cnblogs.com 开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便 ...
 - 【nginx网站性能优化篇(3)】反向代理实现负载均衡
			
注意,本篇文章为负载均衡的理论篇,后续找个机会推出实战篇.理论篇主要讲述如何配置负载均衡,配置负载均衡不难.难的是真正的实战,比如如何做到多服务器之间的数据共享(session,file等),多cac ...
 - Lumina将是基于 Qt工具箱,旨在取代KDE成为PC-BSD默认的桌面环境
			
Lumina Desktop 1.1.0 发布了,该版本是重要更新,包括全新的以及完全重新编写的utilities,并对底层基础架构进行改进. Lumina将是基于 Qt工具箱,旨在取代KDE成为PC ...
 - redhat 新装后不能联网
			
1.ifconfig查看是否有ip地址,如果没有就配置,命令如下: [root@redhat ~]# system-config-network 设置DHCP 为 [*] [ok]后,重新ifconf ...
 - Android Cursor空指针的问题
			
最近几天无聊自己动手写个音乐播放器,用到Cursor来取得数据库中音乐文件的信息,但是当用到Cursor的时候总是报空指针错误,后来发现是模拟器上没有音乐文件,使用Cursor的时候 ,若Cursor ...
 - 盘点PHP编程常见失误
			
概述:本文盘点PHP开发者在编码时,容易忽略或不注意引起的小失误与错误. 变量声明 如果在一条语句中声明一个变量,如下所示:$var='value';编译器首先会求出语句右半部分的值,恰恰正是语句的这 ...
 - CMMI  配置管理
			
配置库的相关知识 通过建立物理配置库的设立规范.各配置库目录的设立原则,确保配置库的统一与规范,确保项目产品得到有效的管理与运用,提高资源的共享与利用:通过 变更管理活动,保证产品的完整.正确.一致, ...
 - js学习对象创建
			
Object.extend = function(destination, source) {for (var property in source) { destination[propert ...