java红黑树操作问题、求大神指点

仝齾翯郻龏 仝齾翯郻龏 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
求大神指点
问题如下:
(此为java Treemap的deleteEntry源码)
private void deleteEntry(Entry<K,V> p) {
modCount++;
size--;

// If strictly internal, copy successor's element to p and then make p
// point to successor.
if (p.left != null && p.right != null) {
Entry<K,V> s = successor(p);
p.key = s.key; //1、
p.value = s.value; //2、
p = s; //3、在上面1、2处是不是多余操作了?既然都直接将s覆盖p了,
//为何还用1、2的操作?这样是有何用意呢?

} // p has 2 children

// Start fixup at replacement node, if it exists.
Entry<K,V> replacement = (p.left != null ? p.left : p.right);

if (replacement != null) {
// Link replacement to parent
replacement.parent = p.parent;
if (p.parent == null)
root = replacement;
else if (p == p.parent.left)
p.parent.left = replacement;
else
p.parent.right = replacement;

// Null out links so they are OK to use by fixAfterDeletion.
p.left = p.right = p.parent = null;

// Fix replacement
...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
仝齾翯郻龏
Java SE 62,620 成员 307,251 内容