530. Minimum Absolute Difference in BST

Given a binary search treewith non-negative values, find the minimum absolute difference between valuesof any two nodes.

    谷歌翻译:给定具有非负值的二叉搜索树,找到任意两个节点的值之间的最小绝对差。

    首先说一下二叉搜索树,就是二叉排序树。二叉排序树的查找过程和次优二叉树类似,通常采取二叉链表作为二叉排序树的存储结构。中序遍历二叉排序树可得到一个关键字的有序序列,一个无序序列可以通过构造一棵二叉排序树变成一个有序序列,构造树的过程即为对无序序列进行排序的过程。每次插入的新的结点都是二叉排序树上新的叶子结点,在进行插入操作时,不必移动其它结点,只需改动某个结点的指针,由空变为非空即可。搜索,插入,删除的复杂度等于树高,O(log(n)).

    每次看到树这一张用递归都头疼,一些简单的还好理解,难得就实在写不出来了。这题我是直接将它遍历,然后再求差值。虽然通过测试了,但是我觉得这个比较low。等大神求更好的吧,代码如下:

/**

 * Definition for a binary tree node.

 * public class TreeNode {

 *    int val;

 *    TreeNode left;

 *    TreeNode right;

 *    TreeNode(int x) { val = x; }

 * }

 */

public class Solution {

    List<Integer> ls=new ArrayList();

    public int getMinimumDifference(TreeNoderoot) {

        //先遍历,再放入到集合中排序

        visit(root);

        Collections.sort(ls);

        int a=Integer.MAX_VALUE;

        for(int i=1;i<ls.size();i++){

            if(ls.get(i)-ls.get(i-1)<a)

                a=ls.get(i)-ls.get(i-1);

        }

        return a;

       

    }

    public void visit(TreeNode root){

        if(root!=null){

            ls.add(root.val);

            visit(root.left);

            visit(root.right);

        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值