树—详细讲解

为什么需要树这样数据结构、
1.数组存储方式分析
优点:通过下表方式访问元素,速度快。对于有序数组没还可以使用二分查找提高检索速度。
缺点:如果要检索某一个具体值,效率比较低下
2.链式存储方式分析
优点:在一定程度上对数组存储方式进行优化(比如插入一个节点,只需要将插入节点,链接到链表当中可删除的效率也很好)。
缺点:在进行检索时,效率仍然比较低,比如(检索某个数值,需要从头结点开始遍历)
3.树存储方式分析
能提高数据存储,读取的效率,比如利用二叉排序树,既可以保证数据的检索速度。同时也可以保证数据的插入,删除,修改的速度。

和线性表有很大的区别,线性表的关系是一对一的,而树的节点的对应关系是一对多的

二叉树

满二叉树: 一个二叉树,如果每一层的结点数都达到最大值,则称这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为k,且结点总数是(2^k)-1,则它就是满二叉树。

完全二叉树: 是效率很高的数据结构,它是由满二叉树而引出来的。对于深度为k的,有n个结点的二叉树,当且仅当每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。注意:满二叉树是一种特殊的完全二叉树。

二叉搜索树

1、如果左子树不为空,那么所有的左子树的节点值均小于根节点值。
2、如果右子树不为空,那么所有的右子树的节点值均大于根节点值。

查找

1、如果根节点的数据就是要查找的数据,则返回成功。
2、如果根节点的数据大于要查找的数据,则递归查找左子树。
3、如果根节点的数据小于要查找的数据,则递归查找右子树。
4、如果子树为空,则查找失败。

平衡二叉搜索树

被称之为AVL树,平衡二叉树可以定义为一颗空树,或者是一颗二叉查找树,在兼备二叉查找树的性质的同时又具有以下的几种特点:

1、平衡二叉树的形态之一是空树,另一种形态是树的左右节点的深度之差不可以超过1。
2、平衡二叉树除了根节点外的左右子树分别也是平衡二叉树,依次类推。
3、二叉树节点的平衡因子定义为该节点的左子树的深度减去右子树的深度。则平衡二叉树的所有节点的平衡因子只可能是-1,0,1。

红黑树

(Red Black Tree) 是一种自平衡二叉查找树,也可以看作是一种特化的平衡二叉树(AVL),都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。红黑树不管是在最坏的情况下或者是最好的情况下,它的插入,查询,删除的时间复杂度都是O(logn)。
1、红黑树的节点是红色或者是黑色。
2、红黑树的根节点是黑色。
3、红黑树的所有叶子都是黑色(叶结点即指树尾端NIL指针或NULL结点)。
4、在红黑树中,如果一个节点是红色,那么它的两个子节点都是黑色。
5、从任一结点到其每个叶子的所有路径都包含相同数目的黑色结点。

B树

B树(B-tree)是一种自平衡的树,能够保持数据有序,这种数据结构可以让查找数据,顺序访问,插入数据和删除数据等操作都在对数的时间内完成。

B树概括来说是一个一般化的二叉查找树(binary search tree),可以拥有多于2个子节点。与自平衡二叉查找树不同,B树为系统大块数据的读写操作做了优化。B树减少定位记录时所经历的中间过程,从而加快存取速度。B树这种数据结构可以用来描述外部存储。这种数据结构常被应用在数据库和文件系统的实现上。
B树具有以下几种性质:

1、根节点至少有两个子女。
2、每个中间节点都包含k-1个元素和k个孩子。其中m/2<=k<=m
3、每个叶子节点都包含有k-1个元素,其中m/2<=k<=m。
4、所有的叶子节点都位于同一层。
5、每个节点中的元素从小到大排列,节点当中k-1个元素刚刚好是k个孩子包含的元素的值域划分。

B+

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

在B树基础上,为叶子结点增加链表指针(B树+叶子有序链表),所有关键字都在叶子结点 中出现,非叶子结点作为叶子结点的索引;B+树总是到叶子结点才命中。 b+树的非叶子节点不保存数据,只保存子树的临界值(最大或者最小),所以同样大小的节点,b+树相对于b树能够有更多的分支,使得这棵树更加矮胖,查询时做的IO操作次数也更少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值