面试真题

Java · 中等 · 网易

为什么链表要转换成红黑树?

中等 Java 🎤 网易
参考答案
结论:链表长度过大时查找复杂度退化为O(n),转换为红黑树可将查找、插入、删除稳定控制在O(log n)。原理:以HashMap为例,当桶中节点数超过8且表容量≥64时链表转红黑树;红黑树是自平衡二叉搜索树,通过颜色翻转与旋转保持黑高平衡,最坏情况深度约2log(n+1);而链表需遍历。对比:红黑树节点占用空间约为链表2倍,短链表转树反而慢,故设阈值8(泊松分布下冲突8概率千万分之6)。示例:冲突桶达16节点,链表需16次比较,红黑树最多4次。空间换时间应对哈希碰撞恶化。
题目整理自公开面经,答案由校招宝自研生成,仅供参考