数据结构
文章平均质量分 73
东纪元
这个作者很懒,什么都没留下…
展开
-
二叉树
二叉树的深度:二叉树的根结点所在的层数为1,根结点的孩子结点所在的层数为2,以此下去。深度是指所有结点中最深的结点所在的层数。树的度:1、自身理解:节点的度就是节点的分叉数,整棵树的度就是分叉最多的那个节点的分叉数。2、官方概念:节点的子树个数(该节点的度数即该节点的孩子个数),二叉树的度最多为2。 满二叉树:一棵二叉树的结点要么是叶子结点,要么它有两个孩子结点,这样的树才是是...转载 2018-07-19 14:00:41 · 221 阅读 · 0 评论 -
1.8 HashMap文字描述(复习)
1、查找(1)通过hash求余找到相应的桶,如果桶的节点是是链表节点则(2),如果是红黑树节点则(3)(2)遍历链表比较hash,和通过equals比较,找到相等的(3)红黑树的查找,和二分搜索树没什么差别,也是通过key的hash和equals找到相等的2、插入(1)当桶数组 table 为空时,通过扩容的方式初始化 table(2)如果桶中没有任何节点,则新插入节点直接...原创 2019-01-11 14:40:45 · 195 阅读 · 0 评论 -
最小生成树算法:普里姆算法和克鲁斯卡尔算法
普里姆算法—Prim算法算法思路:从已选顶点所关联的未选边中找出权重最小的边,并且生成树不存在环。其中,已选顶点是构成最小生成树的结点,未选边是不属于生成树中的边。(普里姆算法与求最短路径的迪杰斯塔拉算法思想很类似)下面我们对下面这幅图求其最小生成树:假设我们从顶点v1开始,所以我们可以发现(v1,v3)边的权重最小,所以第一个输出的边就是:v1—v3=1:...转载 2018-10-16 15:20:43 · 21211 阅读 · 5 评论 -
迪杰斯特拉算法(大学数学里的过程)
以A为起始点,计算出A到其他各顶点的最短路径。迪杰斯特拉算法每一步都可以确定从A到其他某一个点的最短路径。注意:下面A->F(6)(括号内的值表示权值,其他同理)1、A的邻接点之后F与B,则A->F(6)与A->B(3.5)放入待选边集。此时待选边集有:A->F(6)、A->B(3.5) 。此时确定最短路径的顶点为:A -...原创 2018-08-01 11:10:46 · 1281 阅读 · 0 评论 -
图的存储结构--多重邻接表(邻接多重表)
和十字链表类似。区别在于数组存的链表的元素的结构不同。十字链表数组元素的结构是:数据、第一条入边引用、第一条出边引用。十字链表链表的元素结构是:边的起点、边的终点、下一条出边引用、下一条入边引用而多重邻接表数组元素结构是:数据、包含 当前索引对应顶点 的第一条边引用。多重邻接表链表的元素结构是:边的起点、包含当前边的起点的另一条边的引用、边的终点、包含当前边终点的另一条边的...原创 2018-10-23 15:02:32 · 2509 阅读 · 0 评论 -
数据结构--无序的完全二叉树转为堆
无序的完全二叉树转为堆。这里以转为最大堆为例:首先要知道sift down下沉操作,才能理解怎么转为最大堆,最大堆的下沉:下沉某个节点,即把该节点与它的两个子节点,共3个节点中值最大的结点选出来作为这三个节点中的父节点。并且,下沉后,被下沉的结点及其子节点还要进行下沉操作,直到不需要下沉为止,这是为了避免下沉后节点破坏了已经建立好的堆结构。下沉操作举个例子:如图:上面这...原创 2018-07-21 14:45:40 · 1840 阅读 · 0 评论 -
图的存储结构--十字链表
、十字链表对于有向图来说,邻接表是有缺陷的。关心了出度问题,想了解入度就必须要遍历整个图才能知道。反之,逆邻接表解决了入度却不了解出度的情况。有没有可能把邻接表和逆邻接表结合起来呢?答案是肯定的,就是把它们整合在一起。这种存储有向图的方法是:十字链表(Orthogonal List).我们重新定义顶点表结点结构为:data firstin firstout 其中...翻译 2018-07-26 16:08:48 · 771 阅读 · 0 评论 -
图的存储结构--邻接表
无向图:无向图适合邻接表,有向图适合使用十字链表。一个一维数组,每个数组元素存储一个链表。链表元素的结构为:终点(弧头)下标,权值,下一个元素引用。数组元素下标对应的顶点与 存储的链表的所有元素的终点下标对应的顶点 是互为邻接点。如下图:有向图:对于有向图来说,邻接表并不适合,用十字链表更加合适。有向图的一个邻接表要么只能表示出度的邻接关系,要么只能表示入度的邻...原创 2018-07-26 16:06:25 · 383 阅读 · 0 评论 -
图的存储结构--邻接矩阵
邻接矩阵由一个一维数组和一个二维数组组成。设图的顶点有n个,序号从0~n-1一维数组存储图的顶点的信息。元素个数为n。二维数组元素个数为n*n,每个元素存储的是n个顶点与n个顶点之间的权值,当第i行第j列的权值不是无穷大(当前类型能表示的最大值)时,则序号为i的顶点与序号为j的顶点之间没有边。当权值为0时,表示的是顶点自己与自己的权值。以上说的是无向图的,而有向图的与无向图的差距不...原创 2018-07-26 15:45:58 · 282 阅读 · 0 评论 -
数据结构---堆
二叉堆:是一个完全二叉树,可分为最大堆和最小堆。最大堆:每个节点都比它的孩子节点大。所以根节点的值是整个堆中最大的。最小堆:每个节点都比它的孩子节点小。所以根节点的值是整个堆中最小的。这里以最大堆为例:添加节点:(1)新添加的节点在一开始添加在堆的最下层的其它节点的右边(看下面的示意图) (2)然后...原创 2018-07-20 21:02:18 · 129 阅读 · 0 评论 -
红黑树
转载自http://www.tianxiaobo.com/2018/01/11/%E7%BA%A2%E9%BB%91%E6%A0%91%E8%AF%A6%E7%BB%86%E5%88%86%E6%9E%90/1.红黑树简介红黑树是一种自平衡的二叉查找树,是一种高效的查找树。它是由 Rudolf Bayer 于1978年发明,在当时被称为对称二叉 B 树(symmetric binary B...转载 2019-01-08 15:59:27 · 103 阅读 · 0 评论