①题目

给定一个所有节点为非负值的二叉搜索树,求树中任意两节点的差的绝对值的最小值。

示例 :

输入:

1
   \
   3
  /
2

输出:
1

解释:
最小绝对差为1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。
注意: 树中至少有2个节点。

②思路

这个题我自己没做出来,所以看了别人的题解。

思路就是,使用中序遍历,在中序遍历的同时,计算差值。

③代码

 class Solution {
TreeNode pre;
int res = Integer.MAX_VALUE; //res是一个全局变量,作为答案。它的具体计算,在helper函数里。
public int getMinimumDifference(TreeNode root) {
if(root==null)
return 0;
helper(root);
return res;
}
private void helper(TreeNode root){
if(root==null) return; //只是return(什么都不做了,跳出此轮的helper函数),而不要return一个数。
helper(root.left);
if(pre!=null)
res = Math.min(res,Math.abs(root.val-pre.val));
pre=root;
helper(root.right);
}
}
//中序遍历的结果是升序输出,所以在中序遍历的过程中,计算差值。

④学到的知识

1、中序遍历的核心代码部分就是,在递归时,先输出root.left.val,再输出root.val,最后输出root.right.val。

2、求两者中小的那个,就用Math.min(a,b)函数就行了,不要写什么if(a<b) return a;else return b;行数又多又不好看。

3、注意代码里的15行,也就是root什么时候传给pre。

4、从第10行到12行,就直接可以递归到该BST的左下角那个节点,

5、大概推一下BST左下角的递归流程:

马上要上课了,不跟这个旋转了90的图斗争了。

最新文章

  1. 我的前端故事----Ajax方式和jsonp的实现区别
  2. linux笔记:权限管理-sudo
  3. 从URL中获取搜索关键字
  4. Tomcat启动报错:Failed to initialize end point associated with ProtocolHandler [&quot;http-apr-8080&quot;]
  5. 类似百度文库pdf2swf+flexpaper解决pdf在线阅读的效果
  6. 【@ContextConfiguration】java世界的那些注解
  7. poj1111 DFS
  8. https://github.com/coolnameismy/BabyBluetooth github上的一个ios 蓝牙4.0的库并带文档和教程
  9. Java基础---继承、抽象、接口
  10. 深度学习菜鸟的信仰地︱Supervessel超能云服务器、深度学习环境全配置
  11. MySQL学习笔记_9_MySQL高级操作(上)
  12. .Net Core 在Linux服务器下部署程序--(3). 部署.net core 后端程序
  13. [CF566A]Matching Names
  14. css3 属性
  15. Pychram IDE链接MySQL下更新数据的问题总结
  16. 【Spring】4、Spring中 @Autowired标签与 @Resource标签 的区别
  17. LNMP(Linux+Nginx+MySQL+PHP)centos6.4安装
  18. 消息系统之Apache ActiveMQ
  19. HTML5 Canvas ( 文字的度量 ) measureText
  20. ftp上传下载工具类

热门文章

  1. 攻防世界(XCTF)WEB(进阶区)write up(一)
  2. PHP compact
  3. PHP array_search
  4. 动画讲解TCP
  5. Unity的学习笔记(射线检测)
  6. Tomcat 的单机多实例配置
  7. 委托事件(jQuery)
  8. python wraps的作用
  9. URL中文参数,JSON转换,PHP赋值JS
  10. Fine-Grained(细粒度) Image – Papers, Codes and Datasets