特殊树(2-3-4树、红黑树、B类树、B+树、哈夫曼树)

2-3-4树

认识2-3-4树

2节点:包含一个键(对应的数据) 两个链(两个叉) 左子树的值都不大于该节点 右子树的值都不小于该节点

3节点:包含两个键(对应的数据) 三个链(三个叉) 左子树的值都不大于该节点 中子树的值位于两个节点值之间 右子树的值都不小于该节点

4节点:包含三个键(对应的数据) 四个链(四个叉) 左子树的值都不大于该节点 左中子树的值位于前两个节点值之间 右中子树的值位于后两个节点值之间 右子树的值都不小于该节点

构建2-3-4树的要领:跟非叶子节点比较大小 找到对应的叶子节点 往叶子节点上有序放数据 如果放z上挤中间数 原节点裂成两个新节点 依此类推

2-3-4树与红黑树的关系

红黑叔的2节点:只有一个根节点(黑的)

红黑树的3节点:因为三节点有两个键(数据值) 所以在红黑树中是一棵树 如果以小数作为根节点 则大数是它的右子树 如果是以大数作为根节点 则小数作为它的左子树(根节点是黑的 子树是红的)

红黑树的4节点:中间的数作为根节点 小数作为左子树 大数作为右子树(根节点是黑的 子树是红的)

红黑树的叶子节点是黑的 若最底部是红的 需要加上黑色的NULL

红黑树的特点

  1. 每个节点不是黑的就是红的

  2. 根节点是黑的

  3. 每个叶子节点都是黑的 并且都是空节点(要保证都是以NULL黑节点结尾)

  4. 从根节点到任意一个叶子节点的路径上包含了相同数量的黑色节点(2-3-4树高度相同 且每个节点都含有黑色节点 则通过的黑色节点的数量相同)

  5. 由前五点发现 如果一条路径上有三个黑色节点,那么最长的路径:黑红黑红黑 那么最短路径是:黑黑黑

  6. 结论:确保没有一条路经比其他路径差两倍

  7. 时间复杂度O(logn)

 B类树

B树的特点:B树允许一个节点包含多个key(数值),一般会使用一个参数构建一个B树,称为M阶B树 那么有以下特点:

  1. 每个节点最多有M-1个key并且是升序排序

  2. 每个节点最多有M个子节点

  3. 根节点至少有两个子节点

B树构建要领:和2-3-4树类似 M阶的键数为M-1 链数为M+1

内存 :红黑树存储 电信号传输

磁盘 : B树存储 物理传输

 B+树

B+树的非叶子节点仅具有索引的作用 B+树的所有非叶子节点构成一个有序链表

B+树的非叶子节点只存key值 做索引使用 一页能存储更多的key值 树的高度越低

B+树的叶子节点相连 对整棵树的遍历只需要一次遍历叶子节点即可 区间查找

B树:每一个节点都包含key(给文件编号)和value(页号) 根据key值查找value时 只要找到key,就能立马找到value

B树:磁盘

B+树:数据库

哈夫曼树(无序树)

什么叫编码:

定长编码:ASCII 1字节 八位 256

unicode(不是定长编码) 2字节 16位 2^16

变长编码(用于减少空间的浪费):把传输代表信息的比特流变短 但简单的变长编码会让数据产生歧义

哈夫曼树的部分概念:

  1. 路径和路径长度:在一颗树中 从一个节点·到达后代节点之间的通路 称为路径 通路当中的分支的数目称为路径的长度 若规定根节点层数位L 则从根节点到第L层节点的长度为L-1

  2. 节点的权:若树中节点赋给一个有着某种意义的数值 则这个数值称为这个节点的权

  3. 带权路径长度:从根节点到该节点之间的路径长度与该节点的权的乘积

  4. 树的带权路径长度:树的带权路径长度为所有叶子节点的带权路径长度之和 记为WPL 权值越大的节点离根节点越近 WPL越小 最小的WPL数就是哈夫曼树

  5. 每个数值都是叶子节点 且你要找的点的路径上没有其他的数值

  6. 节点路径左0右1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值