树化的意义是什么?【java面试题】

树化的意义是什么?【java面试题】

树化的意义:

红黑树用来避免 DoS 攻击,防止链表超长时性能下降,树化应当是偶然情况,是保底策略。

hash 表的查找,更新的时间复杂度是 $O(1)$,而红黑树的查找,更新的时间复杂度是 $O(log_2⁡n )$,TreeNode 占用空间也比普通 Node 的大,如非必要,尽量还是使用链表。

hash 值如果足够随机,则在 hash 表内按泊松分布,在负载因子 0.75 的情况下,长度超过 8 的链表出现概率是 0.00000006,树化阈值选择 8 就是为了让树化几率足够小。

树化规则:

当链表长度超过树化阈值 8 时,先尝试扩容来减少链表长度,如果数组容量已经 >=64,才会进行树化。

退化规则:

情况1:在扩容时如果拆分树时,树元素个数 <= 6 则会退化链表。

情况2:remove 树节点时,若 root、root.left、root.right、root.left.left 有一个为 null ,也会退化为链表。

什么是冒泡排序?手写一段冒泡排序的代码

Javascript猜数游戏怎么实现?【含游戏源码】

lock和synchronized有什么区别?

Java线程优先级:Thread类的优先级常量

传智教育JAVA开发工程师培训

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/254045.html

(0)
上一篇 2022年5月9日
下一篇 2022年5月9日

相关推荐

发表回复

登录后才能评论