Я работаю над проблемой, когда мне нужно найти пару, в которой разница значений не превышает k.Теперь дерево, установленное в Java, делает это для меня, но мне любопытно узнать, как это работает.Я предполагаю, что он создает какой-то сегмент и отображает этот сегмент с некоторыми значениями в хэш-карте.
Я проверил определение в intelliJ, но не смог найти ничего, что объясняет, как оно работает.
Я нашел этот код в Treemap, и теперь я хочу понять, как он на самом деле работает
final Entry<K,V> getCeilingEntry(K key) {
Entry<K,V> p = root;
while (p != null) {
int cmp = compare(key, p.key);
if (cmp < 0) {
if (p.left != null)
p = p.left;
else
return p;
} else if (cmp > 0) {
if (p.right != null) {
p = p.right;
} else {
Entry<K,V> parent = p.parent;
Entry<K,V> ch = p;
while (parent != null && ch == parent.right) {
ch = parent;
parent = parent.parent;
}
return parent;
}
} else
return p;
}
return null;
}