![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法python篇
小白piao
一个曾经玉树临风,如今秃顶的老登儿,提供专业的C++和Python相关的知识供大家学习
展开
-
python进阶之数据结构与算法--中级-二叉搜索树
二叉搜索树一、概念:二、遍历二叉搜索树2.1 什么遍历方式?2.2 遍历的原理:2.3 提供的方法:2.4 伪代码:2.4.1 节点的后继节点after(p)的伪代码:2.4.2 节点的前驱节点before(p)的伪代码:三、搜索四、插入和删除一、概念: 在之前的章节中已经为各位介绍过树的概念,实际上树就是一种很常见的ADT,存储方式也是非线性且更加贴近自然的,而树最重要的功能就是用作搜索树。在本节中我们利用搜索树来有效实现有序映射。映射M有三种最基本的方法原创 2020-06-02 23:59:15 · 256 阅读 · 0 评论 -
python进阶之数据结构与算法--中级-哈希map的实现及原理
Hash_map的实现1-collections.MutableMapping1.1 概念:这是什么?2-我们的map基类2.1 实现这个类3-通过map基类实现的无序映射4-Python哈希表的实现的基类4.1 咱有话直说:上才(代)艺(码)5-分离链表实现的具体哈希map类6-用线性探测处理冲突的哈希map类1-collections.MutableMapping1.1 概念:这是什么? 大家可能想知道这一串英文是什么意思?其实只需要了解在colle原创 2020-05-31 02:48:53 · 812 阅读 · 0 评论 -
python进阶之数据结构与算法--中级-哈希表
哈希表的实现1、 哈希表的概念2、哈希函数2.1、哈希码2.1.1 将位作为整数处理2.1.2 多项式哈希码2.1.3 循环位移哈希码2.1.4 python中的哈希码2.2、压缩函数3、冲突解决方案3.1、分离链表3.2、开放寻址3.3、线性探测及其变种1、 哈希表的概念 一种python用来实现map和dict的数据结构,称其为哈希表;众所周知一个映射M使用键k作为索引M[k]。由此哈希表有了更进一步的定义,通过哈希函数将每一个一般的键映射到一个表中的原创 2020-05-29 20:25:10 · 299 阅读 · 0 评论 -
python进阶之数据结构与算法--入门-树的遍历算法的python实现
树的遍历的代码实现前言一、树的遍历1.1 先序遍历1.2 后续遍历1.3广度优先遍历1.4二叉树的中序遍历前言 书接上回,上边我们用伪代码的形式解释了树常见的通用遍历方式:前序、后续、广度优先,和二叉树专用的中序遍历。接下来,会按照上一节内容,为各位逐个展示各类遍历方法的核心代码,这些代码,可以添加在之前几节中写好的Tree类中(之前定义的一个树ADT)。一、树的遍历 树T其中,应该包含两个方法: 原创 2020-05-27 21:42:48 · 178 阅读 · 0 评论 -
python进阶之数据结构与算法--入门-树的遍历算法精讲
前序: 对上一节内容进行补充和说明: 一般树的链式存储结构: 由于一般树不像二叉树那样结构具有很明显的特点(一个节点至多有两个子节点,若有两个节点后者没有节点的称之为完全二叉树,否则称之为不完全二叉树),所以在一个节点处子节点的个数实质上是不确定的,所以,可以在节点中设置列表L专门用来存储其子节点的引用。如图:&n原创 2020-05-25 22:15:07 · 248 阅读 · 0 评论 -
python进阶之数据结构与算法--入门-二叉树的代码实现
二叉树的实现: 二叉树的实现也是最简单的一个实现,因为其结构更加固定且有一定好寻的规律,不至于那么繁琐,所以由简到繁,先说说二叉树的链式存储结构。一个节点包含多个引用,指向存储在位置p的元素的引用,指向p的子节点和父节点的引用。 若p没有子节点中的任何一个,则对应的引用为None; 如果p是T的根节点,则p的parent引用同样为None; 树本身包含一个实例变量,存储指向根节点的引用,还包含一个size变量,表示T的所有节点数。 ...原创 2020-05-24 21:37:18 · 240 阅读 · 0 评论 -
python进阶之数据结构与算法--入门-二叉树
二叉树概念: 之前已经提及了关于树的概念,要想知道之前讲了什么请关注,前边文章里都有提及。这里不做赘述。 二叉树是具有以下属性的有序树: 1、每个节点最多有两个孩子节点 2、每个孩子节点被命名为左子节点和右子节点 3、对于每个节点的孩子节点,在顺序上,左子节点优先于右子节点 4、若子树的根为内部节点v的左子节点或者右子节点,则该子树相应地...原创 2020-05-23 00:24:14 · 187 阅读 · 0 评论 -
python进阶之数据结构与算法--入门-树
树的基本概念: 生产力专家说,突破源自于‘非线性’地思考问题。本节讨论一种重要的非线性数据结构--树,树结构确实是一种突破,利用它实现的一系列算法要比线性结构执行效率快的多,树也提供了一种更加自然和真实的组织形式。树的结构是分层的,讨论结构要重点区分‘上面的’和‘下面的’。 树是一种将元素分层次存储的抽象数据类型。除了最顶部的元素,每个元素在树中都有一个‘双亲’节点和零个或者多个的‘孩子’节点,通常称最顶部的元素为树的根(root),其他元素被连接在它的下面,这和真正的植物树的...原创 2020-05-22 15:59:08 · 166 阅读 · 0 评论 -
python进阶之数据结构与算法--入门-双向链表
双向链表: 在单向链表中,每个节点为其后继节点维护一个引用。之前强调过可以在单向链表的任意位置插入一个节点,也可以在链表的开头处轻松删除一个节点。但是不能有效地删除链表结尾的节点。更一般地说,我们不好通过某个节点的引用而去直接删除该节点,因为其节点的前驱节点并不好确定。所以单向链表有比较明显的不对称性,每次只能通过头节点向后的遍历找到要删除的节点的前驱节点,这样非常不方便且耗时。 为了更好的对称性,我们定义了一个链表,每个节点都维护了指向其前驱节点以及后继节点的引用,这...原创 2020-05-20 23:34:02 · 215 阅读 · 0 评论 -
python进阶之数据结构与算法--入门-循环链表
前言: 之前在用列表实现队列时,有为各位提到过循环数组的概念,不知道各位是否还记得,循环数组的概念是人为定义的,因此,在数组内部自身的表示中没有任何循环结构,只是有一个(front+1)%L的概念。这是一种循环数据结构常用的手段。 在链表中,我们可以使尾节点的next指针指向头节点,由此来获得一个更切实际的循环链表的结构。如图:图是真心丑,各位看客凑合看,不喜勿喷,我的最丑板书那不是盖的,是真的。:-)&n原创 2020-05-16 22:37:31 · 173 阅读 · 0 评论 -
python进阶之数据结构与算法--入门-单向链表(小白piao分享)
前言 在之前的博客中有为各位同学提到通过列表这种参考数据类型去实现一些抽象数据类型(ADT Abstract Data Type)例如栈、队列,Python中的list是经过了高度优化的,通常也是考虑存储问题的最优解,但是列表也有缺点: (1)一个动态数组的有效长度可能超过实际存储数组元素的所需长度 (2)在μOS中对原创 2020-05-15 23:13:46 · 189 阅读 · 0 评论 -
python进阶之数据结构与算法--入门-利用列表实现队列(小白piao分享)
概念: 队列: 一种先进先出(FIFO)的抽象数据模型,类似于大家去看电影购票排队一样,先排到的先进,后来的排在结尾,来的越晚,进去看电影也就越晚。所以里边就有两个最基础的方法,出队列和进队列。 &n原创 2020-05-13 23:24:24 · 723 阅读 · 0 评论 -
python进阶之数据结构与算法--入门-利用列表实现栈(小白piao分享)
概念: 栈: 名称的由来:这个名字来源于自动售货机中用弹簧顶住的一堆盘子的隐喻。 概念:这里提到的栈是一种抽象的数据结构,而非空间内存分配处涉及的空间存储的概念。但是大同小异,原理还是来自于对栈空间的理解。这里的栈是有一系列对象组成的一个集合,这些对象的插入和删除操作遵循原创 2020-05-13 16:31:34 · 179 阅读 · 0 评论 -
python进阶之数据结构与算法--入门第一课(小白piao分享)
内容澄清: 本作者的学习均来自与日常书籍,编码经验的总结,知识踩在伟人的肩膀上,加入自己的理解之后,分享给各位。请注意,知识梳理确实是原创,但不敢说知识是自己的,只能说我踩在巨人肩膀上。望各位同我一样,既然已经整理,就请各位看客,好好梳理即可,不要纠结知识从哪里来的,这样学习并没有好处,有资源,就吸取资源就好了。最近很多学生很好奇我是如何短期内获取或...原创 2020-04-22 12:26:24 · 246 阅读 · 0 评论