大家好呀,今天为大家带来的LeetCode的题目是 leetcode 530、783两道关于二叉搜索树最小绝对差的题目,由于解法十分相似就合在一起进行分析。
题目
分析
这个题目属于简单题目,思路也相对简单,首先最先想到的解决方法是将这个树转换为list,然后再去寻找这个list中的最小绝对值差,那么有了思路以后我们在着手对其进行优化。
优化点:
- 排序:去寻找list中最小绝对值差的时候,可以先将其排序,然后只需要寻找相邻的数据之间的即可。
- 中序遍历:既然要获取一个有序的数据,而且是个二叉树,我们可以利用二叉树的性质,之间在转换list的时候就将其变为有序,可以直接采用中序遍历的方法进行遍历,省去了后面将其排序的时间。
解法一:中序遍历
经过上面的分析,我们知道,最简单的方法就是,首先进行中序遍历然后对其进行逐一取值
代码实现
解法一:中序遍历
List<Integer> ans;
public int getMinimumDifference(TreeNode root) {
ans=new ArrayList<>();
dfs(root);
int temp=Integer.MAX_VALUE;
for(int i=1;i<ans.size();i++){
temp= Math.min(temp,ans.get(i)-ans.get(i-1));
}
return temp;
}
public void dfs(TreeNode treeNode){
if(treeNode==null)
return ;
dfs(treeNode.left);
ans.add(treeNode.val);
dfs(treeNode.right);
return ;
}
最后
-
如果觉得看完有收获,希望能给我点个赞,这将会是我更新的最大动力,感谢各位的支持
-
欢迎各位关注我的公众号【java冢狐】,专注于java和计算机基础知识,保证让你看完有所收获,不信你打我
-
如果看完有不同的意见或者建议,欢迎多多评论一起交流。感谢各位的支持以及厚爱。