【LeetCode每日一题】[简单]530. 二叉搜索树的最小绝对差

【LeetCode每日一题】[简单]530. 二叉搜索树的最小绝对差

6530. 二叉搜索树的最小绝对差

题目来源
算法思想:搜索二叉树,中序遍历
思路:

  1. 二叉搜索树中序遍历是从小到大的顺序(元素非负),
  2. 排好序的两个相邻元素之差的绝对值最小即为数组中任意两个元素之差绝对值最小
  3. 利用树的中序遍历递归算法实现

题目:
在这里插入图片描述

java代码

class Solution {
    
    
    int min = Integer.MAX_VALUE;//记录绝对值最小值;初始设置成最大值
	int prior = Integer.MAX_VALUE;//记录前一位数值大小,初始设置成最大值
	public int getMinimumDifference(TreeNode root) {
    
    
		dfs(root);//开始递归
		return min;
    }
	
	//左中右,中序遍历,使得遍历的结果是从小到大的递增序列
	private void dfs(TreeNode root) {
    
    
		if (root == null) {
    
    
			return;
		}
		dfs(root.left);//向左递归
		int temp = Math.abs(root.val - prior);//当前的值减去前一位,计算绝对值大小
		if (temp < min) {
    
    //比较,如果更小,进行保存
			min = temp;
		}
		prior = root.val;//将前一位更新为当前值,便于后面计算
		dfs(root.right);//向右递归
	}
}

猜你喜欢

转载自blog.csdn.net/qq_39457586/article/details/109027678