![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
py数据结构
python数据结构教程(李春葆)
踏歌~
本人仍是学生,如有错误恳请各位批评指正!
展开
-
树表的查找以及二叉排序树
本节主要介绍了树表的查找;二叉排序树的定义、性质;判定树与二叉排序树的关系、二叉排序树如何生成;二叉排序树的查找、插入、删除等操作以及相关代码的图解。原创 2023-02-11 15:41:15 · 90 阅读 · 0 评论 -
线性表的查找:顺序查找和折半查找
介绍了折半查找的具体步骤、算法的执行步骤图解演示代码详解、折半查找的算法分析、判定树、查找成功与不成功的ASL的计算以及相关的例题。本节主要介绍了顺序查找的思想、ASL的计算以及算法详解。原创 2023-02-11 15:36:21 · 485 阅读 · 0 评论 -
查找的基本概念
本节介绍了查找的基本概念。原创 2023-02-11 15:27:54 · 47 阅读 · 0 评论 -
排序的一些基本概念
本节主要介绍了排序的一些基本概念。原创 2023-02-11 15:24:11 · 46 阅读 · 0 评论 -
数据结构:堆排序
本节介绍了堆排序的定义、如何判断大根堆小根堆、堆排序的主要步骤、运行过程图解以及代码展现。原创 2023-02-11 15:15:42 · 90 阅读 · 0 评论 -
交换排序:冒泡排序和快速排序
快速排序的的基本思想、运行过程、代码展现、时间复杂度、稳定性。冒泡排序的基本思想、运行过程、代码展现、时间复杂度、稳定性。本节介绍了交换排序的基本思想。原创 2023-02-11 15:11:42 · 68 阅读 · 0 评论 -
平衡二叉树:AVL树
本节介绍了AVL树的由来、定义、调整方法以及失衡原因及类型。原创 2023-02-11 15:06:12 · 46 阅读 · 0 评论 -
弗洛伊德Floyd算法:代码详解及运行过程图解
其实我觉得就是把迪杰斯特拉算法执行了n次,然后抽象出来,直接对图的邻接矩阵进行操作最终得到从所有结点到所有结点的最短路径。#弗洛伊德算法:找到任意所有顶点到所有顶点的最短路径。原创 2023-02-07 13:10:32 · 737 阅读 · 0 评论 -
Dijstral算法:形成过程、原理、算法解析、过程图解
Dijstral算法的思路:以一个点A为出发点,求这个点到点C的最短路径。可以这样求,已知A到B的最短路径,B与C又是直接连通的,A到C也是直接连通的,所以就是两条路径比较,#具体的实现思路如下:找到最短的路作为中转点,看从开始点直接到其他点还是经过中转点到其他点距离近,选短的那条路径,并把这条路径连上的点作为新的中转点,重复此操作。#将这个例子倒推,把B变成多个点,那么就是在众多子点中找路径最短的做为中转点。#从A直接到C这条路和从A到B的最短路+从B直接到C。原创 2023-02-07 12:42:48 · 151 阅读 · 1 评论 -
克鲁斯卡尔Kruskall算法图解
本节介绍了克鲁斯卡尔算法的由来,以及代码如何实现。原创 2023-02-07 10:40:33 · 252 阅读 · 0 评论 -
普利姆Prim算法:形成思路与代码解析
本节介绍了普利姆Prim算法的形成思路与代码解析,重点讲述了其中的如何引入lowcost列表以及closet列表,以及它们的作用和更新步骤。最后我依照代码解释了每一行代码的作用。原创 2023-02-07 09:57:17 · 244 阅读 · 0 评论 -
在无向邻接表G中求顶点v的度、在有向图G中求顶点v的出度和入度
在无向邻接表中求度其实就是求某一个小列表的长度,某个小列表有多少个元素,这个结点的度就是多少。#在无向邻接表G中求顶点v的度(这里的v是要求顶点的序号)#求出度很简单,就是求某个对应小列表的长度。#在有向图G中求顶点v的出度和入度。原创 2023-02-05 18:34:04 · 852 阅读 · 0 评论 -
一个无向图采用邻接矩阵存储,求某一顶点的度、一个有向图采用邻接矩阵存储,求某一顶点的出度和入度
对于有向图求入度,就要看对应的列,对应的列有非0非INF的元素,说明有个结点出度到了该结点,该节点的入度就+1。#对于有权值的,除了指向自己标记为0,没有联通标记为INF,标记其他正常值的就说明有通路,度就可以+1。#对于没有权值的,只要邻接矩阵中对应的小列表中的值为1,说明有边,说明可以是度+1。#无向图的度又可以分为没有权值的无向图的度和有权值的无向图的度。#一个有向图采用邻接矩阵存储,求某一顶点的出度和入度。#一个无向图采用邻接矩阵存储,求某一顶点的度。#对于有向图求出度,和无向图求度是一样的。原创 2023-02-05 16:46:24 · 657 阅读 · 0 评论 -
二叉树与树、森林之间的转换
本节图解了二叉树与树、森林之间的转换的方法。原创 2023-02-04 21:54:21 · 51 阅读 · 0 评论 -
从哈夫曼树到哈夫曼编码
本节主要介绍了哈夫曼树的由来、构造哈夫曼树的步骤以及图解、以及如何过渡到一个哈夫曼编码。原创 2023-02-04 21:51:38 · 186 阅读 · 0 评论 -
线索二叉树的由来、构造过程图解、代码解析
本节介绍了线索二叉树的由来、构造过程图解、代码解析。原创 2023-02-04 21:45:18 · 88 阅读 · 0 评论 -
二叉树的两种构造方法
本节介绍了先序中序或后序中序方法构造二叉树、利用序列化和反序列化构造二叉树。代码运行过程以及来源如下。原创 2023-02-04 21:40:23 · 51 阅读 · 0 评论 -
二叉树的层次遍历
二叉树的定义、实现方式、实现过程、以及代码。原创 2023-02-04 21:32:30 · 36 阅读 · 0 评论 -
满二叉树完全二叉树的定义、编码、性质、存储结构
本节主要介绍了满二叉树完全二叉树的定义、编码、性质、存储结构。原创 2023-02-04 21:28:10 · 65 阅读 · 0 评论 -
二叉树的定义、二叉树与度为二的树的区别、二叉树的特点、二叉树基本数据形态、二叉树抽象数据类型
本节主要介绍了二叉树的定义、二叉树与度为二的树的区别、二叉树的特点、二叉树基本数据形态、二叉树抽象数据类型。原创 2023-02-04 21:24:09 · 133 阅读 · 0 评论 -
树的性质及其推导、树的基本运算、某序遍历的概念、树的四种存储结构
本节主要介绍了树的性质及其推导、树的基本运算、某序遍历的概念、树的四种存储结构。原创 2023-02-04 21:18:48 · 51 阅读 · 0 评论 -
树(py数据结构笔记版)
本节介绍了树的基本定义、特点、抽象数据类型、树的逻辑结构及表示方法、以及度、叶子结点、路径、孩子结点等一些树中的基本概念。原创 2023-02-04 21:13:27 · 82 阅读 · 0 评论 -
采用层次遍历的方法输出值为x的结点的所有祖先
因为想通过设置双亲结点的引用来依次输出祖先结点,一旦找到了值为x的结点,通过这个pre就可以输出所有祖先结点。#如果这个结点的值不为x,如果他的左孩子结点不为空,就以这个左孩子结点为基础,立足于这个结点,这个结点作为新队列中的结点pre,这个新节点的引用就是这个结点。#我觉得这个代码看看就好,一般很难想得出结点两个属性一个为当前结点的引用一个是当前结点的双亲结点。#如果这个结点的值为x,那么设置一个指针q,通过移动指针把祖先结点全部移动到一个列表里。#采用层次遍历的方法输出值为x的结点的所有祖先。原创 2023-02-04 21:04:32 · 118 阅读 · 0 评论 -
采用层次遍历方法设计求二叉树的第k层的结点个数
总体计数的思路:如果结点的层级数与要求的相等,计数器就+1,如果层次数小于要求的层数,就把这个结点的左孩子和右孩子结点进队(并在这个过程中把层级+1),留待之后判断。#层次遍历的算法用到了队列,队列的每一个结点都有两个属性:该结点所在的层级、访问的存储结构结点的地址。#层级的设置:一旦结点访问了其左孩子结点或者右孩子结点其所在的层级就要+1。#如果层级数大于要求的层级数,返回计数器,留待下一个被判断的结点使用计数器。#采用层次遍历方法设计求二叉树的第k层的结点个数。#队列用于存储留待判断的结点。原创 2023-02-03 16:29:01 · 374 阅读 · 0 评论 -
二叉树采用链式存储结构,设计一个算法输出值为x的结点的所有祖先结点
如果不是,检验右孩子结点,如果左孩子右孩子结点都不是,那么左右孩子的孩子结点则进入判断如果有一个有值为x的结点,那么还是把这个结点存入存储列表。#思路:不就是检验一个结点下面是否有值为x的结点吗,一般就是看其左孩子结点是否值为x,如果是,把这个结点的值放进存储列表。#二叉树采用链式存储结构,设计一个算法输出值为x的结点的所有祖先结点。原创 2023-02-03 11:40:05 · 596 阅读 · 0 评论 -
二叉树采用链式存储结构,设计一个算法求二叉树中第k层结点的个数(根节点算是第一层)
其实不用遍历完整棵树,只要层次大于要求的层次就可以不再遍历,如果层次仍然是小于要求的层数的话,就对其左右孩子进行递归操作。#思路:和求某一结点的层次一样,需要去遍历结点,如果结点的层次正好等于要求的层次,那么计数器+1,遍历完整棵树。#二叉树采用链式存储结构,设计一个算法求二叉树中第k层结点的个数(根节点算是第一层)#仍然是在函数的自变量中添加一个自变量用来记树的高度。原创 2023-02-03 10:47:01 · 518 阅读 · 0 评论 -
二叉树sb采用顺序存储结构,设计一个算法建立对应的二叉链。sb根节点编号从0开始
思路:由二叉链的结点索引顺序存储结构的结点。相当于二叉链建立一个结点,就去访问顺序存储结构相应的结点把值存储进去,然后设置其左孩子和右孩子域。#二叉树sb采用顺序存储结构,设计一个算法建立对应的二叉链。sb根节点编号从0开始。#通过左孩子和右孩子的递归,可以实现填充每一个结点。有一点先序遍历的意味。原创 2023-02-03 10:32:22 · 137 阅读 · 0 评论 -
二叉树采用顺序存储结构,设计一个算法将二叉树bt1复制到二叉树bt2
解释一下二叉树复制:在原来的树里放一个结点指针,在新建立的空树放一个结点指针,原来的树结点指针走一步,新建立的树的结点也跟着走并且输入原来树指针指向结点的内容。#这里体现了递归构建的主要思想:构造大问题小问题。假设大问题是最后的根节点和左右子树,小问题是左右子树。#现在按照递归的思路是根节点未复制,而左右子树可复制。要做的就是复制根节点。#二叉树采用顺序存储结构,设计一个算法将二叉树bt1复制到二叉树bt2。原创 2023-02-03 08:26:38 · 232 阅读 · 0 评论 -
式存储二叉树,设计一个算法按从左到右的顺序输出一个二叉树的所有叶子结点值
建立在输出二叉树的所有结点的算法的基础上,输出叶子结点首先要去访问每一个结点,然后如果是叶子结点的话就输出,#判断链式存储结构中结点是否为叶子结点:这个结点的lchild与rchild域都为空。#链式存储二叉树,设计一个算法按从左到右的顺序输出一个二叉树的所有叶子结点值。#不用去管是否是从左到右输出,因为递归访问本身就是先左后右的。原创 2023-02-03 08:26:20 · 497 阅读 · 0 评论 -
求二叉树结点的个数
求二叉树结点的个数可以用先序中序后序遍历,也可以用递归的思路构建算法。其实先序中序后序遍历算法也只是二叉树操作的一个模板,是可以套用这种操作结构的。原创 2023-02-03 08:26:03 · 1054 阅读 · 0 评论 -
求二叉树高度
递归思路,求左子树高度,右子树高度,两个取大值然后+1。原创 2023-02-03 08:26:06 · 69 阅读 · 0 评论 -
查找值为x的结点,找到后返回其位置
查找值为x的结点,找到后返回其位置。#一定要明确t是指针。原创 2023-02-03 08:25:16 · 159 阅读 · 0 评论 -
以字符串的形式输出二叉链
递归过程:遇到一个结点,先把这个结点添加到字符串里面,然后如果有子树的话添加左括号,添加完左子树之后,如果没有右子树,直接添加一个右括号,如果有右子树,添加完右子树之后再添加右括号。#括号的加入时间:有子树就会有元素,添加这个子树的时候左右都要有括号,在添加子树一开始的时候加(,在给添加完这个子树的时候加)#访问下一个结点的条件:只要有左右孩子结点就会有新的子树,就要这样继续递归。#逗号的加入时间:有右子树时就要添加,然后再进行添加右子树的操作。#用到递归,这里是顺序递归,所以是一般语句在递归语句后面,原创 2023-02-02 16:18:28 · 70 阅读 · 0 评论 -
创建一个二叉树,并且设置根节点
先分配一个创建树的空间,然后为其设置根节点,之后再设置左右两个指针域。#一般有关二叉树的创建都是用二叉树的链式存储结构。#访问结点时一般都是用指针来指向这个结点。#创建一个二叉树,并且设置根节点。原创 2023-02-02 15:05:39 · 393 阅读 · 0 评论 -
用递归实现以b为根节点的二叉树的结点的值之和、
递归是操作二叉树的经常使用的操作,说白了二叉树就是一个个结点,递归就是不断操作各个结点。#当然,一般操作的时候用t、b或者其他字母来表示每一个结点。#用递归实现以b为根节点的二叉树的结点的值之和、原创 2023-02-02 14:52:07 · 85 阅读 · 0 评论 -
二叉树的列表存储结构
二叉树的列表存储结构,每个结点为[结点值,左子树列表,右子树列表],虽然域二叉树的链式存储结构的代码一样,但是lchild与rchild的域存储的东西是不一样的。#列表存储结构存储的是子树,而链式存储结构存放的是结点的位置。原创 2023-02-02 14:38:00 · 132 阅读 · 0 评论 -
二叉树的链式存储结构
通常建立结点的时候先输入d的值,然后设置两个孩子结点的域。二叉树的链式存储结构。原创 2023-02-02 14:31:49 · 77 阅读 · 0 评论 -
一棵树采用列表存储结构,设计一个算法求其高度
依然是用到递归的思想,从同级的求高度依次递归往上找。#一棵树采用列表存储结构,设计一个算法求其高度。原创 2023-02-02 11:36:38 · 80 阅读 · 0 评论 -
树按照长子兄弟链进行存储,设计一个算法求其高度
长子兄弟链存储结构这个结构每一层就是一个层,只要指针不断试探性的往下找,找到最大的那个高度即可。#指针的移动分为下移和左移,下移不是none就要继续进行,如果是none,就要进行右移。#值得注意的是,向下的指针每层只有一个,因为eson是每一层的标记。#树按照长子兄弟链进行存储,设计一个算法求其高度。原创 2023-02-02 11:07:14 · 76 阅读 · 0 评论 -
长子兄弟链存储树的结构
这个存储方式把结点的长度规定在了3。#长子兄弟链存储树的结构。原创 2023-02-02 10:49:42 · 108 阅读 · 0 评论