数据结构—04:树

一、二叉排序(查找)树

  1. 若左子树非空,则左子树上所有结点的值均小于根结点的值
  2. 若右子树非空,则右子树上所有结点的值均大于根结点的值
  3. 它的左、右子树也分别是二叉排序树

 


二、AVL树

平衡二叉树,是自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。

  1. 它是一棵空树 或 它的左、右两个子树的高度差的绝对值不超过 1;
  2. 左右两个子树都是一棵平衡二叉树。

 


三、B 树

B-Tree(Balance Tree),也就是平衡树,是一种平衡多叉树。一个节点就是一个磁盘块。

主要特性:

  1. 每个结点最多m个子结点。

  2. 除了根结点和叶子结点外,每个结点最少有m/2(向上取整)个子结点。

  3. 如果根结点不是叶子结点,那根结点至少包含两个子结点。

  4. 所有的叶子结点都位于同一层。

  5. 每个结点都包含k个元素(关键字),这里m/2≤k<m,这里m/2向下取整。

  6. 每个元素(关键字)左结点的值,都小于或等于该元素(关键字)。

  7. 右结点的值都大于或等于该元素(关键字)。

查找:从根结点开始,对结点内的关键字(有序)序列进行二分查找。查询所经过的结点数量要少很多,意味着更少的磁盘IO。

插入:在插入结点时,如果结点已满,需要将结点分裂为两个各占M/2的结点;

删除:删除结点时,需将两个不足M/2的兄弟结点合并;

 


四、B+ 树

B+Tree是在B树基础上的一种优化,是基于 B-Tree 和叶子节点顺序访问指针进行实现,它具有 B-Tree 的平衡性,并且通过顺序访问指针来提高区间查询的性能。

通常用用于数据库操作系统的文件系统中。B+ 树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+ 树元素自底向上插入,这与二叉树恰好相反。

主要特性:

  1. 所有叶子结点之间都有一个链指针;
  2. 所有叶子结点中包含了全部元素信息(key和data);
  3. 所有非叶子结点只存储key;
  4. 所有的data都存储在叶子结点中。

查找:与B树也基本相同,区别是B+树只有达到叶子结点才命中(B-树可以在非叶子结点命中)。进行查找操作时,首先在根节点进行二分查找,找到一个 key 所在的指针,然后递归地在指针所指向的结点进行查找。直到查找到叶子节点,然后在叶子节点上进行二分查找,找出 key 所对应的 data。

插入、删除:会破坏平衡树的平衡性,因此在插入删除操作之后,需要对树进行一个分裂、合并、旋转等操作来维护平衡性。

 


五、B*树

是B+ 树的变体,在B+ 树的非根和非叶子结点再增加指向兄弟的指针

B*树的分裂:当一个结点满时,如果它的下一个兄弟结点未满,那么将一部分数据移到兄弟结点中,再在原结点插入关键字,最后修改父结点中兄弟结点的关键字(因为兄弟结点的关键字范围改变了);如果兄弟也满了,则在原结点与兄弟结点之间增加新结点,并各复制1/3的数据到新结点,最后在父结点增加新结点的指针。

 

 


六、红黑树

一种二叉查找树,但在每个节点增加一个存储位表示节点的颜色,可以是red或black。

 通过对任何一条从根到叶子的路径上各个节点着色的方式的限制,红黑树确保没有一条路径会比其它路径长出两倍。它是一种弱平衡二叉树(由于是弱平衡,可以推出,相同的节点情况下,AVL树的高度低于红黑树),相对于要求严格的AVL树来说,它的旋转次数变少,所以对于搜索、插入、删除操作多的情况下,我们就用红黑树。

  1. 结点非红即黑;
  2. 根节点是黑色;
  3. 所有 NULL 结点称为叶子节点,且认为颜色为黑;
  4. 所有红节点的子结点都为黑色;
  5. 从任一结点到其叶子节点的所有路径上都包含相同数目的黑结点。

 

 


小结

       二叉搜索树:二叉树,每个结点只存储一个关键字,等于则命中,小于走左结点,大于走右结点;

       B树:多路搜索树,每个结点存储M/2到M个关键字,非叶子结点存储指向关键字范围的子结点;所有关键字在整颗树中出现,且只出现一次,非叶子结点可以命中;

       B+树:在B-树基础上,为叶子结点增加链表指针,所有关键字都在叶子结点中出现,非叶子结点作为叶子结点的索引;B+树总是到叶子结点才命中;

       B*树:在B+树基础上,为非叶子结点也增加链表指针,将结点的最低利用率从1/2提高到2/3;

 

 


 

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值