![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
文章平均质量分 78
数据结构:研究的内容,就是如何按一定的逻辑结构,把数据组织起来,并选择适当的存储表示方法把逻辑结构组织好的数据存储到计算机的存储器里。
云中飞鸿--张*峰
这个作者很懒,什么都没留下…
展开
-
2-3 树
2-3 树作为一种平衡查找树,查询效率比普通的二叉排序树要稳定许多。但是2-3树需要维护两种不同类型的结点,查找和插入操作的实现需要大量的代码,而且它们所产生的额外开销可能会使算法比标准的二叉查找树更慢。原创 2024-02-27 18:03:19 · 536 阅读 · 0 评论 -
红黑树(RBTree)BST,的性质与操作
(Binary Search Tree, BST),由于基于二叉查找树(并不是基于 AVL 树 ),因此它是有序的。红黑树和 AVL 树很像,都是为了让二叉查找树能保持平衡,不会退化成链表,让查找时间复杂度能够稳定在 O(log(n))。,当拥有相同数量的节点时,红黑树的层数可能会比 AVL 树高,3、由于红黑树的结构比较复杂,因此它也比较难理解,但我们可以。2、红黑树 和 AVL平衡二叉查找树的区别,有什么不同?基于 AVL 树(平衡二叉查找树))!2.1 相比 AVL 树,红黑树。原创 2024-02-26 15:13:25 · 139 阅读 · 0 评论 -
为什么发明个红黑树,这么设计的意义是什么?
1]二叉查找树在极端的插入情况下,操作时间复杂度会变为O(n),但是*衡二叉树可以一直维持在O(log(n))。因此*衡二叉查找树的效率很高,红黑树是一种自*衡二叉查找树的实现方式,这便是红黑树的意义。最简单的笨办法,当然是逐条比对,但是这样的操作要进行平均 12×1000000000\frac{1}{2}\times1000000000 次比对,也就是平均5亿次。查找、删除、插入操作 时间复杂度 如何实现O(log(n))?如果应用红黑树,就只要最多。为O(log n)。原创 2024-02-21 11:18:39 · 236 阅读 · 0 评论 -
要“改变链表的头指针“就传二级指针
要"改变链表的头指针"就传二级指针原创 2023-03-02 18:12:07 · 141 阅读 · 0 评论 -
二 叉 树(是有序树)
如果把一棵非空的树的根节点删除,则该树就变成了一片森林,森林中的树由原来根节点的各棵子树构成 [5]。2、完全二叉树:深度为k,有n个节点的二叉树当且仅当其每一个节点都与深度为k的满二叉树中编号从1到n的节点一一对应时,称为完全二叉树 [4]。⑥节点的层次:从根节点开始,假设根节点为第1层,根节点的子节点为第2层,依此类推,如果某一个节点位于第L层,则其子节点位于第L+1层 [5]。1、满二叉树:如果一棵二叉树只有度为0的节点和度为2的节点,并且度为0的节点在同一层上,则这棵二叉树为满二叉树 [4]。原创 2024-02-21 14:11:20 · 1045 阅读 · 0 评论 -
二叉树 遍历过程
根是D(写下来),拨不下去了,回到根是D的情况,在图三中,H成为了左子树(写下来),发现没有右子树,那就不写了;回到根是B的情况,在图二中,根结点和左子树已经被我们写好了,到右子树了,右子树是E(写下来);图三中,左子树是H(写下来),根是D(写下来),右子树,没有就不写;先左子树,我们一眼拨到图三,左子树H(写下来),没有右子树,那就到根D(写下来)了;详细解释(我称它为"三分法"):先序遍历是先根,再左,后右,像递归一样一层一层拨开,(此处的根结点是每一个结点皆可是根,而不是最顶上的根结点),如下图;原创 2024-02-21 14:20:49 · 836 阅读 · 0 评论 -
数据存储方式、逻辑管理方式的区别
关于数据结构,与其说它是一门研究存储数据以及数据之间关系的学科,还可以这样概括:它是一门研究数据存储结构和逻辑结构的学科。通过研究数据的物理结构,可以掌握存储数据的方法;通过研究数据的逻辑结构,可以掌握存储数据之间关系的方法。数据的存储结构有 2 种,分别是集中存储和分散存储。如果想集中存储数据,就选择顺序存储结构;如果想分散存储数据,就择链式存储结构。数据的逻辑结构有 4 种,分别是“无关系”、“一对一”、“一对多”和“多对多”。无逻辑关系的数据可以选用查找表存储结构;原创 2024-02-21 16:17:00 · 594 阅读 · 0 评论 -
二叉排序树(Binary Sort Tree)/二叉查找树(Binary Search Tree)/亦称二叉搜索树
原文链接:数据结构-二叉排序树(图文详细版)-CSDN博客原创 2024-02-22 18:15:11 · 323 阅读 · 0 评论 -
线性表(线性结构)包含有哪些
数组元素的直接访问/查找几乎没有开销,但是插入和删除操作需要移动数组元素,开销比较大,因此在插入和删除操作比较频繁的场合下,不适合用数组。- 双链表 (Doubly Linked List): 每个元素有两个指针,一个指向前一个元素,另一个指向下一个元素。- 单链表 (Singly Linked List): 每个元素只有一个指向下一个元素的指针。链表访问数据元素/查找的效率比较低,需要从链表头部向后搜索,查找操作的时间复杂度为O(n)。- 主要操作包括 enqueue(插入)和 dequeue(删除)。原创 2024-02-21 14:53:07 · 782 阅读 · 0 评论 -
平衡二叉树(AVL):,“平衡”是指什么?为什么要“平衡”?
也就是说,一棵失衡的树,是有可能有多棵子树同时失衡的。如 LR 型最后的根结点为原来的根的左孩子的右孩子,RL 型最后的根结点为原来的根的右孩子的左孩子。只不过 AVL 树在删除节点后需要重新检查平衡性并修正,同时,删除操作与插入操作后的平衡修正区别在于,插入操作后只需要对插入栈中的弹出的第一个非平衡节点进行修正,而删除操作需要修正栈中的所有非平衡节点。对于删除操作造成的非平衡状态的修正,可以这样理解:对左或者右子树的删除操作相当于对右或者左子树的插入操作,然后再对应上插入的四种情况选择相应的旋转就好了。原创 2024-02-22 13:35:23 · 1095 阅读 · 0 评论