日拱一卒——Leetcode 530.二叉搜索树的最小绝对差

大家好呀,今天为大家带来的LeetCode的题目是 leetcode 530、783两道关于二叉搜索树最小绝对差的题目,由于解法十分相似就合在一起进行分析。

题目

image

分析

这个题目属于简单题目,思路也相对简单,首先最先想到的解决方法是将这个树转换为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和计算机基础知识,保证让你看完有所收获,不信你打我

  • 如果看完有不同的意见或者建议,欢迎多多评论一起交流。感谢各位的支持以及厚爱。

image

猜你喜欢

转载自blog.csdn.net/issunmingzhi/article/details/109029670