LeetCode530. 二叉搜索树的最小绝对差
2024-10-18 20:30:57
题目
又是常见的BST,要利用BST的性质,即中序遍历是有序递增序列。
法一、中序遍历
1 class Solution {
2 public:
3 vector<int>res;
4 void InOrder(TreeNode* p){
5 if(p!=NULL){
6 InOrder(p->left);
7 res.push_back(p->val);
8 InOrder(p->right);
9 }
10 }
11 int getMinimumDifference(TreeNode* root) {
12 InOrder(root);
13 int min = INT_MAX;
14 for(int i = 0;i < res.size() - 1;i++){
15 if(abs(res[i]-res[i+1]) < min )
16 min = abs(res[i]-res[i+1]);
17 }
18 return min;
19 }
20
21 };
法二、优化后的中序遍历,不开数组,在递归过程中应用pre指针保存前结点
1 class Solution {
2 public:
3 int res = INT_MAX;
4 TreeNode* pre;
5 void InOrder(TreeNode* root){
6 if(root!= NULL) {
7 InOrder(root->left);
8 if(pre!=NULL) res = min(res,root->val - pre->val);
9 pre = root;
10 InOrder(root->right);
11 }
12 }
13
14 int getMinimumDifference(TreeNode* root) {
15 InOrder(root);
16 return res;
17 }
18
19 };
总结:BST题目常利用中序遍历和双指针技巧
最新文章
- node模块函数图解
- 使用ionic2开发一个登录功能
- Javascript 技巧集(1)
- 高端大气上档次Ergotron Neo-Flex+MBP Retina的组合~
- CSS3圆角气泡框,评论对话框
- MYSQL 优化建议
- Docker系列(五)OVS+Docker网络打通示例
- android_小总结_方法过时的兼容处理
- Myself
- [Android] 更改关联的源码路径
- $.getjson方法配合在url上传递jsoncallback=?参数,实现跨域获取指定网站某商品访问量
- Java中的会话管理——HttpServlet,Cookies,URL Rewriting(译)
- Jlink 烧写Uboot
- 前端需要了解的HTTP协议
- kubernets基础
- 在已经安装的nginx上,增加ssl模块
- Centos7 下SVN迁移
- python 阿狸的进阶之路(9)
- AngularJS 模块及provide
- 【Java】JVM(一)、Java内存区域
热门文章
- 前端使用canvas生成盲水印的加密解密
- .net core WebAPI性能监控-MiniProfiler与Swagger集成
- Jetty web server 远程共享缓冲区泄漏漏洞学习
- Java基础进阶:时间类要点摘要,时间Date类实现格式化与解析源码实现详解,LocalDateTime时间类格式化与解析源码实现详解,Period,Duration获取时间间隔与源码实现,程序异常解析与处理方式
- os模块和os.path模块常用方法
- C盘满了删除C盘文件
- EF并发问题,在提供程序连接上启动事务时出错。有关详细信息,请参阅内部异常。
- Dovecot邮件服务器的正确安装方法
- Winform Dock顺序调整
- apk获取sha1值的方法