题目

又是常见的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题目常利用中序遍历和双指针技巧

最新文章

  1. node模块函数图解
  2. 使用ionic2开发一个登录功能
  3. Javascript 技巧集(1)
  4. 高端大气上档次Ergotron Neo-Flex+MBP Retina的组合~
  5. CSS3圆角气泡框,评论对话框
  6. MYSQL 优化建议
  7. Docker系列(五)OVS+Docker网络打通示例
  8. android_小总结_方法过时的兼容处理
  9. Myself
  10. [Android] 更改关联的源码路径
  11. $.getjson方法配合在url上传递jsoncallback=?参数,实现跨域获取指定网站某商品访问量
  12. Java中的会话管理——HttpServlet,Cookies,URL Rewriting(译)
  13. Jlink 烧写Uboot
  14. 前端需要了解的HTTP协议
  15. kubernets基础
  16. 在已经安装的nginx上,增加ssl模块
  17. Centos7 下SVN迁移
  18. python 阿狸的进阶之路(9)
  19. AngularJS 模块及provide
  20. 【Java】JVM(一)、Java内存区域

热门文章

  1. 前端使用canvas生成盲水印的加密解密
  2. .net core WebAPI性能监控-MiniProfiler与Swagger集成
  3. Jetty web server 远程共享缓冲区泄漏漏洞学习
  4. Java基础进阶:时间类要点摘要,时间Date类实现格式化与解析源码实现详解,LocalDateTime时间类格式化与解析源码实现详解,Period,Duration获取时间间隔与源码实现,程序异常解析与处理方式
  5. os模块和os.path模块常用方法
  6. C盘满了删除C盘文件
  7. EF并发问题,在提供程序连接上启动事务时出错。有关详细信息,请参阅内部异常。
  8. Dovecot邮件服务器的正确安装方法
  9. Winform Dock顺序调整
  10. apk获取sha1值的方法