博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LC99 Recover Binary Search Tree
阅读量:6485 次
发布时间:2019-06-23

本文共 1769 字,大约阅读时间需要 5 分钟。

这题要注意一种特殊情况,就是交换的两个数相邻时会怎么样。

此外,题目中要求用O(1)空间解题,那就只能递归中序遍历二叉树了,不能用栈。

1 class Solution { 2     TreeNode* p1; 3     TreeNode* p2; 4     stack
is; 5 public: 6 void inorder(TreeNode* root) 7 { 8 if(root==NULL) 9 return;10 inorder(root->left);11 if(p1==NULL)12 {13 p1=root;14 }15 else if(p1->val>root->val)16 {17 if(is.empty())18 {19 is.push(p1);20 is.push(root);21 }22 else23 is.push(root);24 p1=root;25 }26 else if(p1->val<=root->val)27 {28 p1=root;29 }30 inorder(root->right);31 }32 void recoverTree(TreeNode* root) {33 if(root==NULL||(root->left==NULL&&root->right==NULL))34 return;35 p1=NULL;36 p2=NULL;37 TreeNode* head=root;38 inorder(root->left);39 if(p1==NULL)40 {41 p1=root;42 }43 else if(p1->val>root->val)44 {45 if(is.empty())46 {47 is.push(p1);48 is.push(root);49 }50 else51 is.push(root);52 p1=root;53 }54 else if(p1->val<=root->val)55 {56 p1=root;57 }58 inorder(root->right);59 p2=is.top();60 is.pop();61 p1=is.top();62 is.pop();63 if(is.empty())64 {65 swap(p1->val,p2->val);66 }67 else68 {69 p1=is.top();70 swap(p1->val,p2->val);71 }72 73 }74 };

 

转载于:https://www.cnblogs.com/vaecn/p/5237299.html

你可能感兴趣的文章
日本开设无人机专业,打造无人机“人才市场”
查看>>
190行代码实现mvvm模式
查看>>
兼容几乎所有浏览器的透明背景效果
查看>>
Linux VNC server的安装及简单配置使用
查看>>
阿里宣布开源Weex ,亿级应用匠心打造跨平台移动开发工具
查看>>
Android项目——实现时间线程源码
查看>>
招商银行信用卡重要通知:消费提醒服务调整,300元以下消费不再逐笔发送短信...
查看>>
数据库运维体系_SZMSD
查看>>
js的AJAX请求有关知识总结
查看>>
三分 POJ 2420 A Star not a Tree?
查看>>
修改OBS为仅直播音频
查看>>
OCA读书笔记(3) - 使用DBCA创建Oracle数据库
查看>>
Python基础进阶之路(一)之运算符和输入输出
查看>>
ClickStat业务
查看>>
spring3.0.7中各个jar包的作用总结
查看>>
Windows 10 /win10 上使用GIT慢的问题,或者命令行反应慢的问题
查看>>
iOS自定制tabbar与系统的tabbar冲突,造成第一次点击各个item图片更换选中,第二次选中部分item图片不改变...
查看>>
我的路上
查看>>
DB2与oracle有什么区别
查看>>
创建一个多级文件目录
查看>>