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

仝齾翯郻龏 2017-11-19 04:57:54
求大神指点
问题如下:
(此为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
...全文
179 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
迟到_啦 2017-11-20
  • 打赏
  • 举报
回复
。。。有时候就是 一直想不明白,但是多想想,突然一下就找到关键了
仝齾翯郻龏 2017-11-19
  • 打赏
  • 举报
回复
懂了,搞蒙了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧