当前位置: 首页 > 编程日记 > 正文

leetcode第一刷_Recover Binary Search Tree

这是一道好题,思路尽管有,可是提交之后总是有数据过不了,又依照数据改改改。最后代码都没法看了。收到的教训是假设必须为自己的代码加上非常多非常多特殊的限定。来过一些特殊的数据的话。说明代码本身有非常大的漏洞。

这道题,我想到了要用两个指针保存乱序的节点,甚至想到了用一个pre指针来保存前面一个节点,可是问题出在哪里呢?我认为应该是自己对树的遍历理解的不够深刻。既然知道了二叉搜索树一定是用中序遍历的,那么程序的框架应该立即写的出来,先左子树,再根,再右子树,那你说什么时候更新pre指针呢,当然是訪问根节点的时候。假设把每次返回的节点作为接下来考虑的左子树,事实上并非一种中序遍历,更像是前序遍历。另一点,我当时总是想单独的找出这两个乱序的节点,然后加了非常多特殊情况考虑假设他们两个相邻怎么办。事实上这不是非常好解决的吗,由于一共仅仅有两个节点乱掉了,那么一開始不满足条件的那对节点肯定包括了当中一个,并且是较大的那个是乱掉的。往后的话,假设又出现了这个问题,一定是较小那个,不用加不论什么特殊情况的考虑。

代码很简洁,好羞愧:

TreeNode *e1, *e2, *pre;
void inorder(TreeNode *root){if(root == NULL) return;if(root->left)inorder(root->left);if(pre&&pre->val>root->val){if(e1 == NULL)   e1 = pre, e2 = root;else e2 = root;}pre = root;if(root->right)inorder(root->right);return;
} class Solution {
public:void recoverTree(TreeNode *root) {pre = NULL, e1 = NULL, e2 = NULL;inorder(root);swap(e1->val, e2->val);return;}
};


转载于:https://www.cnblogs.com/jzdwajue/p/6781985.html

相关文章:

Java中的文件路径

通常情况下,在Java项目中,我们使用的路径都是在拿到类加载路径后,根据相对位置,使用 FilePathTest.class.getResourceAsStream(relativePath);拿到文件。今天小生不使用classPath,而是直接去使用相对路径来…

js上传文件,上传表单demo 包含后端php

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 正文&#xff1a; <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><title>Title</title><script src"https://ajax.as…

如何在Tensorflow.js中处理MNIST图像数据

by Kevin Scott凯文斯科特(Kevin Scott) 如何在Tensorflow.js中处理MNIST图像数据 (How to deal with MNIST image data in Tensorflow.js) There’s the joke that 80 percent of data science is cleaning the data and 20 percent is complaining about cleaning the data …

常用图像额文件格式及类型

1、显示一幅二值图像&#xff1a; >> bw zeros(90,90); >> bw(2:2:88,2:2:88) 1; >> imshow(bw); >> 2、利用image函数显示一幅索引图像&#xff1a; >> [X,MAP] imread(E:\STUDY_software\Matlab2016\images\11.jpg); >> image(X); &…

微信小程序实现滑动翻页效果源码附效果图

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 正文&#xff1a; 微信小程序实现滑动翻页效果 效果图&#xff1a; 源码&#xff1a; <view class"mainFrame"><swiper class"container" indicator-dots"{{indic…

Ubuntu 系统 文件操作命令

文件和目录的操作 用户主目录下有一个 Desktop (对应,桌面)mkdir dir1 建立一个目录cd 不添加参数,默认回到主目录(用户目录)touch a.txt 建立一个文件mv a.txt Desktop/ 移动到Desktop/中 mkdir dir1cp -r dir1/ dir2 不加-r或者&#xff0d;R的时候&#xff0c;只拷贝文件&am…

firebase 推送_如何使用Firebase向Web应用程序添加推送通知?

firebase 推送by Leonardo Cardoso由莱昂纳多卡多佐(Leonardo Cardoso) 如何使用Firebase向Web应用程序添加推送通知&#xff1f; (How to add push notifications to a web app with Firebase ??) As web applications evolve, it is increasingly common to come across f…

lucene构建同义词分词器

lucene4.0版本号以后 已经用TokenStreamComponents 代替了TokenStream流。里面包含了filter和tokenizer 在较复杂的lucene搜索业务场景下&#xff0c;直接网上下载一个作为项目的分词器&#xff0c;是不够的。那么怎么去评定一个中文分词器的好与差&#xff1a;一般来讲。有两个…

正则匹配出字符串中两串固定字符区间的所有字符

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 正文&#xff1a; 效果&#xff1a;匹配两个字符串区间的字符串 代码&#xff1a; var dd[];var str is_img"https://www.baidu.com/"is_img11is_img"https://www.baidu.com/"is…

识别手写字体app_我如何构建手写识别器并将其运送到App Store

识别手写字体app从构建卷积神经网络到将OCR部署到iOS (From constructing a Convolutional Neural Network to deploying an OCR to iOS) 项目动机✍️?? (The Motivation for the Project ✍️ ??) While I was learning how to create deep learning models for the MNIS…

20155307 2016-2017-2 《Java程序设计》第10周学习总结

20155307 2016-2017-2 《Java程序设计》第10周学习总结 教材学习内容总结 网络编程&#xff1a;就是在两个或两个以上的设备(例如计算机)之间传输数据。程序员所作的事情就是把数据发送到指定的位置&#xff0c;或者接收到指定的数据。在发送和接收数据时&#xff0c;大部分的程…

WinForm 实现验证码

private void CheckIdentifyingCode() { Random r new Random(); string str ""; for (int i 0; i < 5; i) { int a r.Next(0, 10); str a;//将数字连接到一块 } Bitmap bm new Bitmap(150, 90);//创建位图对象 Graphics g Graphics.FromImage(bm);//在bm中…

微信小程序打开预览下载的文件

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 使用 wx.openDocument(obj) 方法预览 wx.downloadFile({url: http://example.com/somefile.pdf,success: function (res) {var filePath res.tempFilePathwx.openDocument({filePath: filePath,success…

aws lambda_为什么我会自动删除所有旧的推文以及我用来执行此操作的AWS Lambda函数...

aws lambdaFrom now on, my tweets are ephemeral. Here’s why I’m deleting all my old tweets, and the AWS Lambda function I’m using to do all this for free.从现在开始&#xff0c;我的推文只是短暂的。 这就是为什么我删除所有旧的推文&#xff0c;以及免费使用所有…

Topcoder SRM 657DIV2

前言: 像我这样一直在DIV2的弱菜。。不知道说什么了。 A:一定判断有8个‘R’&#xff0c;每行 每列只有一个 B题&#xff1a;大概是 int E,int EM,int M,int MH,int H 然后EM可以给值到E&#xff0c;M&#xff0c;MH可以给值到H&#xff0c;M&#xff1b; 我的做法二分&#x…

微信小程序换行,空格的写法

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 正文&#xff1a; 1.文本超出部分自动换行&#xff0c;前后对比 实现代码&#xff1a; flex-wrap: warp;white-space: pre-wrap; 2.text 手动添加换行的写法 { text: 12测试换\n行符&#xff0c;测试\…

我是如何在尼日利亚的沃里创立Google Developers Group GDG分会的,并达到了100位成员...

It only takes a spark to get a fire going, and soon all those around can warm up in its glowing. — Kurt Kaiser, Pass It On只需要一点火花就能使火熄灭&#xff0c;周围的所有人很快就会在炽热的火焰中升温。 — Kurt Kaiser&#xff0c;传递下去 I am convinced beyo…

ES6 你可能不知道的事 – 基础篇

ES6 你可能不知道的事 – 基础篇 转载作者&#xff1a;淘宝前端团队&#xff08;FED&#xff09;- 化辰 链接&#xff1a;taobaofed.org/blog/2016/07/22/es6-basics/ 序 ES6&#xff0c;或许应该叫 ES2015&#xff08;2015 年 6 月正式发布&#xff09;&#xff0c;对于大多数…

Android线程之主线程向子线程发送消息

和大家一起探讨Android线程已经有些日子了&#xff0c;谈的最多的就是如何把子线程中的数据发送给主线程进行处理&#xff0c;进行UI界面的更新&#xff0c;为什么要这样&#xff0c;请查阅之前的随笔。本篇我们就来讨论一下关于主线程向子线程如何发送数据&#xff0c;这个用的…

HTML上传excel文件,php解析逐条打印输出

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 正文&#xff1a; phpExcel文件下载 ←跳转地址 demo <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><title>Title</title>…

javascript编写_如何通过编写自己的Web开发框架来提高JavaScript技能

javascript编写Have you ever asked yourself how a framework works?您是否曾经问过自己框架是如何工作的&#xff1f; When I discovered AngularJS after learning jQuery many years ago, AngularJS seemed like dark magic to me.多年前学习jQuery后&#xff0c;当我发现…

2016ACM/ICPC亚洲区大连站现场赛题解报告(转)

http://blog.csdn.net/queuelovestack/article/details/53055418 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原本过的人数比较多的题结果重现过的变少了,而原本现场赛全场过的人最少的题重现做出的人反而多了一堆,不过还是不影响最水的6题,然…

微信小程序插件新增能力

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 正文&#xff1a; “ 小程序插件能力升级&#xff1a;开放插件登录能力&#xff0c;帮助插件开发者更好地管理用户&#xff1b;支持在插件内使用微信支付能力&#xff0c;便于用户在插件内完成预订、购…

ubutun:从共享文件夹拷贝文件尽量使用cp命令而不是CTRL+C/V

为了方便&#xff0c;VBOX安装的Ubuntu&#xff0c;并在硬盘上创建了一个与Windows的共享文件夹sharefolder方便在两个系统之间传文件 但是经常发现的问题就是从sharefolder中拷贝文件到ubuntu中会出现很多毛病&#xff0c;比如说经常按了CTRLC之后没有拷贝最新的文件&#xff…

影像锐化工具_如何以及为什么要进行工具改造:花在锐化斧头上的时间永远不会浪费...

影像锐化工具by Harshdeep S Jawanda通过Harshdeep S Jawanda 如何以及为什么要进行工具改造&#xff1a;花在锐化斧头上的时间永远不会浪费 (How and why you should tool-up: time spent sharpening your axe is never wasted) There is this old anecdote about two friend…

ListT随机返回一个

/// <summary> /// 随机返回一条数据 /// </summary> /// <param name"list"></param> /// <returns></returns> protected string GetRandomData(List<string> list) {return list.OrderBy(_ > Guid.NewGuid()).First…

微信小程序插件功能页开发详细流程

有问题可以扫码加我微信&#xff0c;有偿解决问题。承接小程序开发。 微信小程序开发交流qq群 173683895 、 526474645 &#xff1b; 正文&#xff1a; 关于新出的微信小程序插件功能页做一下记录&#xff0c;希望能帮到大家 步骤&#xff1a; 1.打开开发者工具&#x…

(拆点+最小路径覆盖) bzoj 2150

2150: 部落战争 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 518 Solved: 298[Submit][Status][Discuss]Description lanzerb的部落在A国的上部&#xff0c;他们不满天寒地冻的环境&#xff0c;于是准备向A国的下部征战来获得更大的领土。 A国是一个M*N的矩阵&#xff0…

使用Flow检查React,Redux和React-Redux的全面指南

by Fabian Terh由Fabian Terh 使用Flow检查React&#xff0c;Redux和React-Redux的全面指南 (A comprehensive guide to type checking React, Redux, and React-Redux with Flow) This article is divided into 4 sections:本文分为4个部分&#xff1a; Type checking Redux…

微信小程序WebSocket实现聊天对话功能完整源码

相关文章&#xff1a; 1.小程序聊天群&#xff0c;发送语音&#xff0c;文字&#xff0c;图片。 2.微信小程序集成腾讯IM&#xff0c;实现实时音视频通话&#xff0c;1V1聊天 3.云开发微信小程序聊天群 4.接入网易云信IM即时通讯的微信小程序聊天室 5.微信小程序聊天功能 …