Skip to content

Commit a794234

Browse files
committed
Remove the wrong RB tree realization.
1 parent b951bcb commit a794234

2 files changed

Lines changed: 1 addition & 1073 deletions

File tree

main.tex

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@
117117

118118
\chapter{概念}
119119

120-
Concept (概念) 是本 C++ 模板的一项核心概念. "概念"引进于 C++20, 是通过一些限定的组合, 进而约束模板的适用范围, 同时也给代码补全器提供便利. 模板还可以简化报错信息, 将抽象的重载决议简化为条件不满足. 例如在 "Addable" 这个概念出现后, 用户可以知道自己传入的参数类型不满足加法性质, 而不是奇怪地在层层编译器的堆栈展开之后, 发现自己的类型不能满足标准库中的一个奇怪函数. 本章节仅覆盖了最常用的一些基础概念, 一些不够常用的概念会分布在各个章节之中. 在本模板中, 除去图论, 红黑树部分由于编写时间较早或一些其它特殊原因, 并未使用概念以外, 所有代码都使用概念进行约束.
120+
Concept (概念) 是本 C++ 模板的一项核心概念. "概念"引进于 C++20, 是通过一些限定的组合, 进而约束模板的适用范围, 同时也给代码补全器提供便利. 模板还可以简化报错信息, 将抽象的重载决议简化为条件不满足. 例如在 "Addable" 这个概念出现后, 用户可以知道自己传入的参数类型不满足加法性质, 而不是奇怪地在层层编译器的堆栈展开之后, 发现自己的类型不能满足标准库中的一个奇怪函数. 本章节仅覆盖了最常用的一些基础概念, 一些不够常用的概念会分布在各个章节之中. 在本模板中, 除去AVL树部分由于一些特殊原因, 并未使用概念以外, 所有代码都使用概念进行约束.
121121

122122
\lstinputlisting[language=C++, caption=concepts.cpp, style=MyCStyle]{./concepts.cpp}
123123

@@ -182,16 +182,6 @@ \section{ST表}
182182

183183
\section{平衡搜索树}
184184

185-
\subsection*{C语言版本红黑树}
186-
187-
红黑树是一种高效的自平衡二叉搜索树. 它通过在普通二叉搜索树的基础上增加额外的信息 (节点颜色: 红或黑) 和遵循一组严格的规则 (红黑规则: 如根节点黑, 红色节点子必黑, 任一节点到叶子的路径包含相同数量黑节点等), 确保树在动态插入和删除操作后能保持相对平衡. 这种平衡性是其高效性能的关键.
188-
189-
这里提供了我早年编写的一个简易红黑树, 使用C语言和侵入式节点编写, 请慎用这份代码, 代码中可能有暗伤! 我已经让 Google Gemini 制作了一些测试和修复, 但是这棵树的稳定性依然堪忧! 等到我完成任何一种 C++ 代码实现的平衡搜索树(AVL或者红黑树)之后, 这份模板就会被删除.
190-
191-
此外, 这份代码中还包含了一些常见的二叉树算法, 包括但不限于节点序构造二叉树, 最近公共祖先等.
192-
193-
\lstinputlisting[language=C++, caption=rb\_tree\_c\_ver.c, style=MyCStyle]{./rb_tree_c_ver.c}
194-
195185
\subsection*{AI辅助完成的自平衡二叉搜索树}
196186

197187
AVL树是一种严格自平衡的二叉搜索树. 它通过在普通二叉搜索树的基础上增加额外的平衡信息 (节点高度) 和遵循一组严格的平衡规则 (AVL规则: 任意节点的左右子树高度差绝对值不超过1) , 确保树在动态插入和删除操作后能通过旋转操作自动恢复完美平衡. 这种近乎苛刻的平衡性是其提供最坏情况下高效查询性能的关键保障.

0 commit comments

Comments
 (0)