![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 83
问道玄霄
初见惊艳,再见依然
展开
-
数据结构与算法-赫夫曼树
赫夫曼树赫夫曼树介绍赫夫曼编码构建赫夫曼树代码实现 赫夫曼树 满二叉树:除了叶子节点,其他的都有两个子节点,1 2 4 8这样的节点 2^n个点 完全二叉树:除了最底层都有两个子节点,而且叶子节点是靠左连续的; 计算下面三颗二叉树的带权路径长度总和: 其中每个点的权重为:a:7 b:5 c:2 d:4 WPL(a):72+52+22+42=36() WPL(b):73+53+21+42=46() WPL©:71+52+23+43=35() 介绍 给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带原创 2021-06-24 01:16:20 · 164 阅读 · 7 评论 -
数据结构与算法-二叉树、二叉搜索树、红黑树
二叉树、二叉搜索树、红黑树树形结构二叉树基于数组实现二叉树;基于链表实现二叉树实现二叉树的层次遍历基于数组实现完全二叉树的遍历二叉搜索树特点二叉搜索树的插入 树形结构 像现实生活中的树、即不再像链表一样、仅仅是一对一的关系。可以是一对一、一对多的关系; 结点:树里面的元素。 父子关系:结点之间相连的边 子树:当结点大于1时,其余的结点分为的互不相交的集合称为子树 度:一个结点拥有的子树数量称为结点的度 叶子:度为0的结点 孩子:结点的子树的根称为孩子结点 兄弟:同一个双亲结点 森林:由N个互不相交的树构成原创 2021-06-23 00:00:58 · 447 阅读 · 3 评论 -
数据结构与算法之栈
栈与队列栈栈如何实现栈的分类栈的基本操作栈的应用场景 栈 比如我们在放盘子的时候都是从下往上一个个放,拿的时候是从上往下一个个的那,不能从中间抽,这种其实就是一个典型的栈型数据结构。后进先出即Last In First Out (LIFO)。 栈如何实现 它是一个限定仅在表尾进行插入和删除操作的线性表。 这一端被称为栈顶,相对地,把另一端称为栈底。 向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素; 从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其原创 2021-06-12 23:31:43 · 131 阅读 · 4 评论 -
数据结构与算法之队列
队列队列特点队列分类队列基本操作者队列实现方式循环队列队列应用场景 队列 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。 进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 队列的数据元素又称为队列元素。 在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故原创 2021-06-12 23:31:19 · 391 阅读 · 1 评论 -
数据结构与算法-链表
链表链表特点单链表LinkedList与ArrayList数组VS链表循环链表双向链表单项链表实现双向链表实现 链表 链表通过指针将一组零散的内存块串联在一起。其中,我们把内存块称为链表的“结点”。为了将所有的结点串起来,每个链表的结点除了存储数据之外,还需要记录链上的下一个结点的地址。 链表也是线性表; 特点 不需要连续的内存空间。 有指针引用 三种最常见的链表结构:单链表、双向链表和循环链表 单链表 从单链表图中,可以发现,有两个结点是比较特殊的,它们分别是第一个结点和最后一个结点。我们一般把第一原创 2021-06-11 02:45:03 · 1103 阅读 · 0 评论 -
数据结构与算法-数组
数组数组数组定义表现形式数组的随机访问数组下标为什么从0开始?优缺点ArrayList和数组堆栈内存数组实现CRUD 数组 是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量也称为数组的分量,也称数组元素。 区分数组的各个元素的数组编号为下标; 数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。这些无序排列的同类数据元素的集合称为数组。 线性表 数组定义 数组是相同数据类型的元素的集合 各元素的存储是有先后顺序的,在原创 2021-06-11 00:41:56 · 652 阅读 · 0 评论