力扣:二叉搜索树的最小绝对差java
流程:中序遍历,使用搜索二叉树的特性,中序遍历数组为升序
递归三部曲:
参数和返回值:void,参数为根节点
结束条件:节点为空,返回上一层。
递归逻辑:遍历左节点
判断pre节点不为空就比较pre节点和当前节点的差值是否小于最小差result,小于则修改最小差为(pre节点和当前节点的差值)
遍历右节点
代码:
class Solution {
TreeNode pre;//记录前一个节点的
int result = Integer.MAX_VALUE;//最小差值
public int getMinimumDifference(TreeNode root) {//主函数
getMin(root);//调用递归函数
return result;//返回结果
}
public void getMin(TreeNode root) {//返回void,参数为根节点
if(root == null) return;//结束条件,节点为空,返回上一层
getMin(root.left);//遍历左节点
if(pre!=null){//前一个节点pre不空,就判断差值是否是最小的
if(root.val-pre.val<result) result = root.val-pre.val;
}
pre = root;//pre记录前一个当前节点为前一个节点
getMin(root.right);//遍历右节点
}
}