使用Java的TreeMap实现,如何计算树中指定节点的路径长度?我的意思是计算在二进制搜索树中搜索节点时执行的比较次数。
答案 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");
}
}