二叉树各种类型汇总

您所在的位置:网站首页 笔试的种类有哪些类型 二叉树各种类型汇总

二叉树各种类型汇总

2024-07-08 21:52| 来源: 网络整理| 查看: 265

文章目录 1 树类型1.1 二叉树1.2 完全二叉树1.3 满二叉树1.4 二叉搜索树(二叉排序树、二叉查找树)1.5 平衡二叉树1.6 红黑树1.6.1 红黑树概念1.6.2 红黑树和AVL树区别 1.7 B树类型1.7.1 B树(B-树、B_树)1.7.2 B+树1.7.3 B*树 学习了树的结构类型后,主要对各种树类型进行汇总总结

1 树类型

树中的基本概念:https://jingzh.blog.csdn.net/article/details/107128291 树类型概述: 二叉树,完全二叉树,满二叉树,二叉排序树,平衡二叉树,红黑树,B树,B+树,B*树

1.1 二叉树

二叉树:二叉树是每个节点最多有两个子树的树结构; 是n(n>=0)个结点的有限集合,它或者是空树(n=0),或者是由一个根结点及两颗互不相交的、分别称为左子树和右子树的二叉树所组成

在这里插入图片描述 二叉树特点:

每个结点最多有两颗子树,所以二叉树中不存在度(结点拥有的子树数目称为结点的度)大于2的结点左子树和右子树是有顺序的,次序不能任意颠倒即使树中某结点只有一棵子树,也要区分它是左子树还是右子树 1.2 完全二叉树

完全二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点 在这里插入图片描述

完全二叉树特点:

叶子结点只能出现在最下层和次下层。最下层的叶子结点集中在树的左部。倒数第二层若存在叶子结点,一定在右部连续位置。如果结点度为1,则该结点只有左孩子,即没有右子树。同样结点数目的二叉树,完全二叉树深度最小 1.3 满二叉树

除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树 在这里插入图片描述 满二叉树特点:

叶子只能出现在最下一层。出现在其它层就不可能达成平衡。非叶子结点的度(结点拥有的子树数目称为结点的度)一定是2在同样深度的二叉树中,满二叉树的结点个数最多,叶子数最多 1.4 二叉搜索树(二叉排序树、二叉查找树)

二叉排序树:可以为空树,或者是具备如下性质:若它的左子树不空,则左子树上的所有结点的值均小于根节点的值;若它的右子树不空,则右子树上的所有结点的值均大于根节点的值,左右子树分别为二叉排序树。 如下图所示: 在这里插入图片描述 但是还有一种特殊情况: 在这里插入图片描述 这种情况下,二叉搜索树已经变更为链表,搜索一个元素的时间复杂度从O(lgn)退化为O(n)出现这种情况的原因是二叉搜索树没有自平衡的机制,所以就有了平衡二叉树

1.5 平衡二叉树

平衡二叉树是一种概念,是二叉查找树的一个进化体,它有几种实现方式:红黑树、AVL树 它是一个空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是平衡二叉树,如果插入或者删除一个节点使得高度之差大于1,就要进行节点之间的旋转,将二叉树重新维持在一个平衡状态。

这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。但是频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对二叉查找树来说,时间上稳定了很多

AVL实现平衡的关键在于旋转操作:

插入和删除可能破坏二叉树的平衡,此时需要通过一次或多次树旋转来重新平衡这个树。当插入数据时,最多只需要1次旋转(单旋转或双旋转);但是当删除数据时,会导致树失衡,AVL需要维护从被删除节点到根节点这条路径上所有节点的平衡,旋转的量级为O(lgn) 由于旋转的耗时,AVL树在删除数据时效率很低;在删除操作较多时,维护平衡所需的代价可能高于其带来的好处,因此AVL实际使用并不广泛

在这里插入图片描述

1.6 红黑树 1.6.1 红黑树概念

红黑树是一种平衡二叉查找树的变体,它的左右子树高差有可能大于1,所以红黑树不是严格意义上的平衡二叉树(AVL),但对之进行平衡的代价较低, 其平均统计性能要强于 AVL 在这里插入图片描述 红黑树的特性:

每个节点或者是黑色,或者是红色根节点是黑色每个叶结点是黑色如果一个节点是红色的,则它的子节点必须是黑色的,红色节点的孩子和父亲都不能是红色。从每个叶子到根的所有路径上不能有两个连续的红色节点,任意一结点到每个叶子结点的路径都包含数量相同的黑结点。确保没有一条路径会比其他路径长出俩倍。因而,红黑树是相对接近平衡的二叉树,并不是一个完美平衡二叉查找树 1.6.2 红黑树和AVL树区别

红黑树和AVL树区别 RB-Tree和AVL树作为二叉搜索树(BBST),其实现的算法时间复杂度相同,AVL作为最先提出的BBST,貌似RB-tree实现的功能都可以用AVL树是代替,那么为什么还需要引入RB-Tree呢

红黑树不追求完全平衡,即不像AVL那样要求节点的 高度差的绝对值


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3