Java二进制搜索树 - 计算节点路径的长度

时间:2014-12-03 16:08:15

标签: java binary-search treemap

使用Java的TreeMap实现,如何计算树中指定节点的路径长度?我的意思是计算在二进制搜索树中搜索节点时执行的比较次数。

1 个答案:

答案 0 :(得分:0)

TreeMap has a constructor以比较器为参数。比较器用于对存储在地图中的密钥进行排序。如果您真的想要计算执行的比较次数",您可以编写一个仪表化的比较器来计算它被调用的次数。

public class StringComparator implements Comparator<String> {
    private int count = 0;

    @Override
    public int compare(String o1, String o2) {
        ++count;
        return o1.compareTo(o2);
    }

    public int getCount() { return count; }
    public void reset() { count = 0; }

    public static void main(String[] args) {
        StringComparator sc = new StringComparator();
        TreeMap<String, String> map = new TreeMap<>(sc);
        map.put("foo", "one");
        System.out.println("foo took " + sc.getCount() + " comparisons");
        sc.reset();
        map.put("bar", "two");
        System.out.println("bar took " + sc.getCount() + " comparisons");
    }
}