Java 你……

xross 输入测试样例的时候抛出了异常,定位到似乎在红黑树的实现内部。在 Java 实现内插一些输出,在 TypeScript 实现内插一些输出,二者输出不一样。从第一个点的处理就出现问题了,二者生成并添加的新点不同。handleEvent() 里有什么呢?checkIntersections(),无非是求交、更新红黑树。求交的部分检查了一下,红黑树的部分犯错误的机会更大吧。

JDK 1.8 的 TreeMap 实现(java/util/TreeMap.java),第 2216 行、第 2235 行(其实还有更多):

/** From CLR */
private void rotateLeft(Entry<K,V> p) {
// ...
}
/** From CLR */
private void rotateRight(Entry<K,V> p) {
// ...
}

看到这个真是乐了。想想 C# 和 Java Hashtable 类上的名称“借鉴”的事,上文的几个“CLR”注释是不是又添了一些料呢?

分享到 评论