java-TreeMap

本文详细介绍了Java中TreeMap的数据结构及其内部实现,重点讲解了红黑树的特性以及在TreeMap中如何维护其平衡。讨论了TreeMap的put()和delete()方法,阐述了插入和删除节点时如何遵循红黑树的性质。同时,提到了比较器在构建TreeMap时的作用,以及如何自定义比较规则。
摘要由CSDN通过智能技术生成

java-TreeMap

问题来源
ocp-809的16题

TreeMap的实现是红黑树算法的实现

1.先了解红黑树

a.红黑树是一颗自平衡的排序二叉树。
b.节点为红色或黑色的平衡二叉树
c.具体规则
红黑树的具体要求
d.红黑树的三大操作:左旋,右旋,着色

2.TreeMap数据结构

TreeMap定义
TreeMap的一个重要属性
比较器
a.如题,构造一个比较器new TreeMap<>();则使用默认的比较器
b.也可new TreeMap<>(Comparator<? super K> comparator);则使用自带的比较器

3.TreeMap put()方法

要求: 插入的新节点总为红色节点
a 若新插入的节点N没有父节点,则直接当做根节点插入即可,同时将颜色设置为黑色
b 若新插入的父节点为黑色,直接插入,同时颜色为红色
b 若新插入的父节点的颜色为红色,破坏了性质,故插入算法就是通过重新着色或旋转,来维持性质

4.TreeMap delete () 方法

1、没有儿子,即为叶结点。直接把父结点的对应儿子指针设为NULL,删除儿子结点就OK了。
2、只有一个儿子。那么把父结点的相应儿子指针指向儿子的独生子,删除儿子结点也OK了
3、有两个儿子。上面提到过用子节点C替代代替待删除节点D,然后删除子节点C即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值