![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
指关节
这个作者很懒,什么都没留下…
展开
-
平衡二叉树(AVLTree--c++)(二)
前言在上篇博客中我们主要讲了AVL树的四种旋转方法以及如何构建AVL树,这篇博客我们主要来看一下AVL树的删除与销毁操作.正文构建AVL树的过程是一个边插入边调整的过程,而删除某个节点的操作那么也是这样的(完成节点的删除后我们需要对AVL树进行判断,如果不再平衡我们需要进行调整).这里将其分为三种情况:删除叶子节点,删除有一颗子树的节点,删除左右子树都有的节点.一个思路:左子树上节点的删...原创 2020-04-02 10:22:11 · 154 阅读 · 0 评论 -
平衡二叉树(AVLTree--c++)(一)
二叉查找树在正式介绍AVL树之前,我们先来了解一下二叉查找树.二叉查找树(Binary Search Tree)(又称二叉搜索树,二叉排序树),它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。那么二叉查找树的引入有什么用呢...原创 2020-04-02 10:20:27 · 242 阅读 · 0 评论 -
图的应用——最短路径——Dijkstra算法
最短路径最短路径是一种思想不同于最小生成树的另一种图的应用,对网图来说,最短路径就是指两个顶点之间经过的边上权值和最小的路径,我们称第一个顶点为源点,最后一个顶点为终点(非网图边上没有权值,所说的最短路径就是两个顶点之间经过的边数最少的路径)。此篇博客围绕Dijkstra算法展开,也就是从某个源点到图中其余各顶点的最短路径问题。Dijkstra算法Dijkstra算法通常被用来解决单源最短...原创 2019-12-11 17:33:48 · 588 阅读 · 0 评论 -
图的应用——最小生成树——Kruskal算法
最小生成树一个连通图的生成树是一个极小的连通子图,它含有图中全部顶点,但只有n - 1条边,我们把构造连通图的最小代价生成树称为最小生成树。如上左图所示,这是一个无向带权图,而右图是它的生成树之一。显然,生成树不唯一,可能有多颗。此图才是上左图的最小生成树。构造最小生成树有多种算法,经典的有两种,Prim算法和Kruskal算法,此篇博客将围绕Kruskal算法展开。Kruskal算...原创 2019-12-04 11:27:59 · 591 阅读 · 0 评论 -
图的遍历——邻接表实现
此篇博客主要就图的储存结构——邻接表展开。邻接表图的一种最便于理解的储存结构就是邻接矩阵了(可以简单的把它视为一个二维数组),但是邻接矩阵在处理边数较少,但顶点较多的情况时会浪费不少的储存空间。因此便有了邻接表这种储存结构。图中顶点用一个一维数组存储, 当然,顶点也可以用单链表来存储,不过数组可以较容易地读取顶点信息,更加方便。另外,对于顶点数组中,每个数据元素还需要存储指向第一个邻接点的...原创 2019-12-03 21:01:51 · 3508 阅读 · 0 评论 -
哈夫曼编码的理解以及简单实现
哈夫曼树在介绍哈夫曼编码前,我们先来了解一下哈夫曼树。美国科学家哈夫曼在1952年发现了哈夫曼编码,为了纪念他的成就,于是把他在编码中用到的特殊二叉树称之为哈夫曼树,这种编码方法称之为哈夫曼编码。那在介绍哈夫曼树之前在补充一些基础知识结点的路径长度:从根结点到该结点的路径上分支的数目。树的路径长度:树中每个结点的路径长度之和。结点的带权路径长度:该结点到根结点之间的路径长度与结点上权的...原创 2019-10-12 19:06:14 · 2643 阅读 · 3 评论 -
二叉树基础操作总结
昨天的数据结构讲座,学长讲了二叉树这方面的知识,今天又复习了一下,赶紧记下来。二叉树的定义二叉树是n个结点的集合,可以为空,也可以由一个根结点和两棵互不相交的左,右子树组成。二叉树的特点1. 每个结点最多有两颗子树(是最多有)。2. 左右子树有顺序,不能随意颠倒(哪怕其中那个结点只有一颗子树,也要区分是左子树还是右子树)。现在让我们正式开始讲一下各种操作先来看一张整体的效果图ty...原创 2019-07-30 20:53:15 · 463 阅读 · 0 评论