
数据结构
文章平均质量分 56
Trick fairy
这个作者很懒,什么都没留下…
展开
-
[数据结构] python 二叉搜索树(BST树)的插入
一、概念二叉搜索树(Binary Search Tree)是一颗二叉树且满足性质:设x是二叉树的一个节点。如果y树x左子树的一个节点,那么;如果y是x右子树的一个节点,那么。用通俗一点的话来说就是在一棵二叉树中,左子树所有节点都比它的根节点小,右子树所有节点都比它的根节点大。(如图所示)所以当我们要定义一个BST树时,用双链表来做就要想到要初始化的东西:1. 数据域data 02. 树的左孩子和右孩子(lchild/rchild)3. 他们的双亲parent定义BST树代码.原创 2021-09-29 18:26:20 · 1571 阅读 · 0 评论 -
[数据结构] python 二叉树的遍历
二叉树的链式存储:将二叉树的节点定义为一个对象,节点之间通过类似链表的链接方式来连接。二叉树节点的定义:class BiTreeNode: def __init__(self, data): self.data = data self.lchild = None # 左孩子 self.rchild = None # 右孩子二叉树的遍历方式有:1. 前序遍历(也称先序遍历):根、左、右2. 中序遍历:左、根、右3. 后续遍历原创 2021-09-29 17:57:48 · 696 阅读 · 0 评论 -
[数据结构] python 树的实例:模拟文件系统
思路:1. 假设文件路径为:/bin/python,文件第一个路径一定是根目录 ‘/’下面将以添加目录、查看当前目录下的所有目录、切换目录三个功能来简单到不能再简单的模拟文件系统;2. 创建目录:传进来的目录名必须以‘/’结尾,连接目录和下一级目录3. 查看当前目录下的所有目录:就是查看当前目录的所有下一级目录4. 切换目录:遍历根目录的下一级目录,找到就切换代码:class Node: def __init__(self,name,type='dir'):原创 2021-09-26 13:37:15 · 671 阅读 · 0 评论 -
[数据结构] 树与二叉树的概念
一、树树是一种数据结构 (比如:目录结构)树是一种可以递归定义的数据结构树是由n个节点组成的集合:1. 如果n=0,那这是一颗空树;2. 如果n>0,那存在1个节点作为数的根节点,其他节点可以分为m个集合,每个集合本身又是一棵树。图片一二、树的一些概念:1. 结点:数据元素以及指向子树的分支2. 根节点:非空树中无前驱结点的结点3. 结点的度:结点拥有的子树数(如上图片一 A节点有6个分支(6个子树),该节点的度是6)4. 树的度:树内各个结点的度的最.原创 2021-09-26 11:03:28 · 388 阅读 · 0 评论 -
[数据结构] python 单链表的创建
链表:链表是由一系列节点组成的元素的集合。每个节点包含两部分,数据域item和指向下一个节点的指针next。通过节点之间的相互连接 ,最终串联成一个链表。创建链表有两种方式:头插法、尾插法。头插法:顾名思义就是从链表的头上插入结点,如图所示当下一个结点“3”进来时,把“3”连上链表的头部“2”此时此刻,“3”要成为新的头,头结点指向“3”代码思路总结:1. 指定头结点2. 新元素的next指向头结点3. 新元素成为头结点尾插法:尾插法就是从链表的尾部.原创 2021-09-24 09:36:00 · 5589 阅读 · 6 评论 -
[数据结构] python 队列解决迷宫问题
例:给一个二维列表(如图所示),表示迷宫(0表示通道,1表示围墙)。给出算法,求一条走出迷宫的路径。队列——广度优先搜索思路:使用队列存储当前正在考虑的节点。从一个节点开始,寻找所有接下来能继续走的点,继续不断寻找直到找到出口。写代码时分别要考虑以下问题:1. 当前所在节点四个方向分别为 x+1,y; x-1,y; x,y+1; x,y-12. 开辟队列时,要开辟一个三维队列,第三个空间用来记是哪个节点让它来的3.当前节点是队首节点4.当走到终点输出队列时,根据是谁让最后一.原创 2021-09-22 21:27:53 · 2463 阅读 · 3 评论 -
[数据结构] python 栈解决迷宫问题
例:给一个二维列表(如图所示),表示迷宫(0表示通道,1表示围墙)。给出算法,求一条走出迷宫的路径。原创 2021-09-20 20:57:15 · 1309 阅读 · 1 评论 -
[数据结构] python 用队列做一个类似于linux的tail命令
读取文件test.txt,返回文件最后的n行内容,相当于执行Unix中的tail命令。test.txt中内容为:djosjddashiojsajsadsalkdsaldaskdasjdjdkajssoakdjsajksdjsalkjsaapkspoaddaslkjsaopkdoaspkdosakdoaskddasopjjd#随便乱打了一个内容方法:直接用collections模块中的deque方法来做就可以了。因为deque([队列],最大长度) 的函数中,当队列达.原创 2021-09-15 17:41:31 · 219 阅读 · 0 评论 -
[数据结构] python 队列的介绍
一、队列队列(Queue)是一个数据集合,仅允许在列表的一端进行插入,另一端进行删除。队列性质:先进先出(First-in,First-out)队列的基本操作:入队(进队):插入动作。进行插入的一端称为队尾(rear)出队:删除动作。进行删除的一端成为队头(front)队列能否用列表简单实现,为什么?答:简单的用列表来做,如图所示:当元素出队时,没有用的空间会随着元素的出队而增加,空间开销会变得很大。这种实现方式,不好。简单的用列表来做做不到。解决方法:把队列头尾原创 2021-09-15 17:23:47 · 863 阅读 · 0 评论 -
[数据结构] python 栈的应用:括号匹配问题
括号匹配问题:给一个字符串,其中包含小括号、中括号、大括号,求该字符串中的括号是否匹配。例如:()()[]{} 匹配([{()}]) 匹配[]( 不匹配[(]) 不匹配算法思想:左括号进栈。右括号不进栈,就看看栈顶有没有自己的对象,没有就不匹配。比如有一堆括号{[}],按照栈的顺序,先进后出出入栈。 1.{说:“我入栈了,我的期待的对象是 }” 2.[说 “我入栈了,我期待的对象是]” 3.到了 } 时 就看看栈...原创 2021-09-15 15:57:46 · 2229 阅读 · 0 评论 -
[数据结构] python 栈的介绍
一、栈栈(Stack)是一个数据集合,可以理解为只能在一端进行插入或删除的列表。栈的特点:后进先出LIFO(last-in,first-out)栈的概念:栈顶(其实也就是列表最后一个元素位置)、栈底(列表第一个元素的位置)栈的基本操作:进栈(压栈):push出栈:pop取栈顶:gettop(取栈顶也可认为:假如面前有一堆书,但是我只取最上面的那个看一眼,但是我不拿走)二、栈的实现使用一般的列表结构实现栈:进栈:li.append出栈:li.pop取栈顶原创 2021-09-15 14:40:53 · 2088 阅读 · 0 评论 -
[数据结构] 顺序表的创建、取值、查找、插入和删除
概述:顺序表为线性表的顺序存储结构,且这种线性存储结构是一种随机存取的存储结构。一、创建顺序表在构造一个顺序表之前,首先我们先要原创 2021-08-02 21:59:41 · 3078 阅读 · 1 评论