【面试】C++_数据结构_树

5 篇文章 0 订阅
1 篇文章 0 订阅


1.你了解红黑树吗,他的特性
2.你了解b+树的数据结构吗
3.二叉树的遍历有哪些方式
4.完全二叉树


红黑树的特性:
(1)每个节点或者是黑色,或者是红色。
(2)根节点是黑色。
(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
(4)如果一个节点是红色的,则它的子节点必须是黑色的。
(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。[这里指到叶子节点的路径]
应用 map set


B树的概念是为了解决一些现实问题而提出的,当数据量太大时,而内存中又无法存储这么多的数据,
那么就需要将数据存储在磁盘上,如果继续采用平衡树的方法就会带来一些问题,平衡树每个节点都会分为两个节点,
那么当数据太大的时候,树的高度也会不断增减,IO操作的次数也随之增加,所以需要降低树的高度,
所以才有了一个节点存储多个数据的B树的方案。

B树与二叉搜索树的最大区别在于其每个节点可以存不止一个键值,并且其子女不止两个,
不过还是需要满足键值数=子女数-1。因此,对于相同数量的键值,B树比二叉搜索树要更加矮一些,
特别是当M较大时,树高会更低。

B+树
B+树主要是应文件系统所需而产生的。文件系统中,文件的目录是一级一级索引,只有最底层的叶子节点(文件)保存数据。
非叶子节点只保存索引,不保存实际的数据,数据都保存在叶子节点中,所有的非叶子节点都可以看成是索引部分。

B+树是B树的一个变种,其也是一种多路平衡搜索树,其与B树的主要区别是:

B-树和B+树的区别
B+树的非叶子节点并没有指向关键字具体信息的指针,因此其内部节点相对B树更小,
如果把所有同一内部节点的关键字存放在同一盘块中,盘块所能容纳的关键字数量也越多,具有更好的空间局部性,
一次性读入内存的需要查找的关键字也越多,相对的IO读写次数也就降低了。
另外对于B+树来说,因为非叶子节点只是叶子节点中关键字的索引,
所以任何关键字的查找都必须走一条从根节点到叶子节点的路,所有关键字查询的路径长度相同。
而若经常访问的元素离根节点很近,则B树访问更迅速,因为其不一定要到叶子节点。
数据库索引采用B+树的主要原因是B树在提高了IO性能的同时并没有解决元素遍历效率低下的问题,
而也正是为了解决该问题,B+树应运而生。因为叶子节点中增加了一个链指针,
B+树只需要取遍历叶子节点可以实现整棵树的遍历。而且数据库中基于范围的查询是非常频繁的,
B树对基于范围的查询效率太低。

参考资料:https://blog.csdn.net/xdzhouxin/article/details/80015424

二叉树的遍历:
1.先(根)序遍历(根左右)
2.中(根)序遍历(左根右)
3.后(根)序遍历(左右根)
4.层次遍历

满二叉树、完全二叉树、平衡二叉树、最优二叉树

参考资料  https://www.cnblogs.com/-citywall123/p/11788764.html
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值