跳转至

查找

查找的基本概念

image-20260509191830479

顺序查找和折半查找

顺序查找

image-20260509191945284

折半查找

image-20260509192056496

分块查找

image-20260509192130850

树形查找

二叉排序树(BST)

image-20260509192700695

平衡二叉树(AVL树)

我的理解是把高的向上提,减少高度

image-202605091938143711. 深度为 \(h\) 的平衡二叉树的最少结点数 \(N_h\) 的递推公式为:

  • \[N_h = N_{h-1} + N_{h-2} + 1\]

平衡二叉树的删除

image-20260509200125002

红黑树的定义与性质

image-20260509203125275

image-20260509204836987

红黑树中的叶子结点不是真实有数据的结点

性质1如何理解?

  • 因为红黑树每条路上的黑结点个数是一定的,所以最短路径就一定是全黑的,那么最长就是往黑结点中间插红结点,同时根节点下也能插一个,所以整条路经长度就是黑结点个数×2。

红黑树的插入

image-20260509205222087

每次插入若不是根节点,如果破坏了规则,那么一定是必定破坏不红红

image-20260509210534127

红黑树的删除

image-20260509211037095

习题总结

  1. 对于给定数量的不同结点构造二叉查找树(Binary Search Tree, BST),其能构造出的树的形态数量仅取决于结点的个数,而与结点的具体数值无关。

  2. 这是因为:只要二叉树的形态(骨架)固定下来,把 \(n\) 个不同的数填进去并满足“左子树 < 根 < 右子树”的二叉查找树性质,只有唯一的一种填法。因此,“\(n\) 个不同结点构造二叉查找树的形态数”等价于“\(n\) 个结点能构成多少种不同的二叉树形态”。

  3. 卡特兰数:\[C_n = \frac{1}{n+1} \binom{2n}{n}\]

  4. 题目中指出有 5 个不同的结点,所以令 \(n = 5\),代入公式:

    \[C_5 = \frac{1}{5+1} \binom{2 \times 5}{5} = \frac{1}{6} \binom{10}{5}\]

    接下来我们计算组合数 \(\binom{10}{5}\) 的值:

    \[\binom{10}{5} = \frac{10 \times 9 \times 8 \times 7 \times 6}{5 \times 4 \times 3 \times 2 \times 1} = 252\]

    最后将结果代回原式得出最终答案:

    \[C_5 = \frac{252}{6} = 42\]

  5. 非空二叉排序树T1删除某结点v后形成二叉排序树T2,再将v插入T2形成二叉排序树T3

  6. 若v是T1叶结点,则T1 == T3;若v不是T1叶结点,则T1 !=T3

非空平衡二叉树T1删除某结点v后形成平衡二叉树T2,再将v插入T2形成平衡二叉树T3

  • 无论v是否是叶结点T1和T2、T3可能一样,可能不一样,因为平衡二叉树涉及到平衡的调整

B树和B+树

B树

image-20260511202530766

image-20260511204113052

自底向上建树

B+树

image-20260511205137809

习题总结

  1. B+树比B树更加适用于实际应用中的操作系统的文件索引和数据库索引,因为前者的磁盘读/写代价更低,查询效率更加稳定。编译器中的词法分析使用有穷自动机和语法树。网络中的路由表快速查找主要靠高速缓存、路由表压缩技术和快速查找算法。系统一般使用空闲空间链表管理磁盘空闲块。

散列(Hash)表

基本概念

image-20260511210133326

构造(如何减少冲突)

image-20260511210212584

处理冲突的方式

拉链法

image-20260511210808459

开放定址法(开放寻址法,蹲坑法)

image-20260511211115207

image-20260511212031893

散列查找的性能分析

image-20260511212045494

习题总结

  1. 装填因子、散列函数、冲突解决策略都有可能影响到哈希的平均查找长度。