软件设计师 · 高频练习

红黑树并非完全平衡,为什么查找仍能保持对数级?

中级 单选题 第 954 题 中等 软件设计师红黑树平衡二叉搜索树黑高时间复杂度
题目

红黑树不要求任意节点左右子树高度完全相等,但其查找时间仍为 O(log n)。支撑这一结论的关键理由是()。

A 所有叶子节点都保存相同的关键字
B 任一路径红节点不能相邻且黑高一致,使最长根叶路径不超过最短路径的两倍
C 每次插入都会把整棵树重建为完全二叉树
D 红黑树只允许保存不超过两个节点
题目类型:原创高频练习题 用途:用于帮助理解软件设计师相关考点和答案解析,不等同于官方真题。
正确答案
B
答案解析

从同一节点到各空叶子的路径具有相同黑节点数,红节点又不能连续出现,因此最长路径至多在黑节点之间各插一个红节点,长度不超过最短全黑路径的两倍。结合节点数可推出树高为 O(log n)。

选项分析

A

错误。二叉搜索树的关键字用于有序比较,叶子关键字不要求相同。

B

正确。红节点不相邻与黑高一致共同限制了路径长度比例。

C

错误。红黑树通过局部旋转和重新着色恢复性质,不会每次重建整棵完全二叉树。

D

错误。红黑树可保存大量节点,节点数不是其平衡条件。

本题为什么容易错

容易误以为只有“左右高度差不超过1”才能得到 O(log n)。AVL 是更严格的高度平衡,红黑树则用颜色约束获得较宽松但足够的高度上界。

先看结论

简短答案

红黑树并非完全平衡,为什么查找仍能保持对数级,正确答案是 B(任一路径红节点不能相邻且黑高一致,使最长根叶路径不超过最短路径的两倍)。从同一节点到各空叶子的路径具有相同黑节点数,红节点又不能连续出现,因此最长路径至多在黑节点之间各插一个红节点,长度不超过最短全黑路径的两倍。结合节点数可推出树高为 O(log n)。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
所有叶子节点都保存相同的关键字 本题干扰项 错误。二叉搜索树的关键字用于有序比较,叶子关键字不要求相同。 看到该词不要急着选,先判断是否真正解决题干问题
任一路径红节点不能相邻且黑高一致,使最长根叶路径不超过最短路径的两倍 本题正确答案 正确。红节点不相邻与黑高一致共同限制了路径长度比例。 看到题干核心场景时优先联想到它
每次插入都会把整棵树重建为完全二叉树 本题干扰项 错误。红黑树通过局部旋转和重新着色恢复性质,不会每次重建整棵完全二叉树。 看到该词不要急着选,先判断是否真正解决题干问题
红黑树只允许保存不超过两个节点 本题干扰项 错误。红黑树可保存大量节点,节点数不是其平衡条件。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 所有叶子节点都保存相同的关键字:错误。二叉搜索树的关键字用于有序比较,叶子关键字不要求相同。
  • 每次插入都会把整棵树重建为完全二叉树:错误。红黑树通过局部旋转和重新着色恢复性质,不会每次重建整棵完全二叉树。
  • 红黑树只允许保存不超过两个节点:错误。红黑树可保存大量节点,节点数不是其平衡条件。
复习

知识点详解

红黑树是一种自平衡二叉搜索树。常见性质包括节点为红或黑、根为黑、空叶子为黑、红节点的孩子为黑,以及从任一节点到其后代空叶子的路径包含相同数量黑节点。设根的黑高为 bh,树至少包含约 2^bh-1 个内部节点,而任一路径长度不超过 2bh,因此高度受 O(log n) 限制。插入和删除通过局部旋转与重新着色恢复这些性质。

备考速记

黑高一样,红不相邻;最长只能黑红交替,至多是最短两倍。

时间复杂度在时间复杂度场景中的作用

时间复杂度在本题中的核心价值,是解决“红黑树不要求任意节点左右子树高度完全相等,但其查找时间仍为 O(log n)。支撑这一结论的关键理由是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 根据红黑性质判断一棵着色树是否合法。
  • 解释红黑树为何不会退化为线性高度。
时间复杂度在软件设计师软考中的考法

软考选择题通常不会只考概念定义,还会把时间复杂度放到时间复杂度场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

可以先想两条极端路径。最短路径几乎全是黑节点;最长路径想尽量拉长,就在黑节点之间插红节点。但规则不允许红接红,所以最多插成黑、红、黑、红。两条路径的黑节点数又相同,于是最长最多约为最短的两倍。这个限制足以防止树退化成链表,也就保住了对数级查找。

考点定位

红黑树保证的是近似平衡,不是AVL树那样严格限制左右子树高度差。判断题看到“完全平衡”通常要警惕。

易错提醒

  • 把空叶子NIL忽略后,错误计算某条路径的黑高。
  • 认为根节点到每个普通叶子的总节点数必须相同。
  • 把重新着色当成会破坏二叉搜索树关键字顺序的操作。

备考提示

  • 画一条全黑短路径,再画一条黑红交替长路径,直观看两倍关系。
  • 把AVL树的高度差约束与红黑树的颜色约束放在表中比较。

你可能还想了解

  • 红黑树为什么不是完全平衡树?
  • 红节点不能相邻怎样限制树高?
  • 红黑树与AVL树的平衡条件有什么区别?

本文小结

红黑树依靠黑高一致和红节点不能相邻限制路径长度:最长根叶路径不超过最短路径的两倍,因此树高及查找复杂度保持O(log n)。