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

[复制链接]
查看11 | 回复2 | 2021-1-27 06:32:08 | 显示全部楼层 |阅读模式
求大神指点
问题如下:
(此为javaTreemap的deleteEntry源码)
privatevoiddeleteEntry(Entryp){
modCount++;
size--;
//Ifstrictlyinternal,copysuccessor'selementtopandthenmakep
//pointtosuccessor.
if(p.left!=null&&p.right!=null){
Entrys=successor(p);
p.key=s.key;//1、
p.value=s.value;//2、
p=s;//3、在上面1、2处是不是多余操作了?既然都直接将s覆盖p了,
//为何还用1、2的操作?这样是有何用意呢?
}//phas2children
//Startfixupatreplacementnode,ifitexists.
Entryreplacement=(p.left!=null?p.left:p.right);
if(replacement!=null){
//Linkreplacementtoparent
replacement.parent=p.parent;
if(p.parent==null)
root=replacement;
elseif(p==p.parent.left)
p.parent.left=replacement;
else
p.parent.right=replacement;
//NulloutlinkssotheyareOKtousebyfixAfterDeletion.
p.left=p.right=p.parent=null;
//Fixreplacement

分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:32:08 | 显示全部楼层
懂了,搞蒙了
回复

使用道具 举报

千问 | 2021-1-27 06:32:08 | 显示全部楼层
。。。有时候就是一直想不明白,但是多想想,突然一下就找到关键了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行