
数据结构
文章平均质量分 72
xboysen
这个作者很懒,什么都没留下…
展开
-
二叉树的遍历python3版本
文章目录先序遍历迭代递归中序遍历迭代递归后序遍历迭代递归层次遍历迭代广度优先搜索BFS应用法1法2深度优先搜索DFS应用法1法2法3输出遍历序列实际上就是将遍历中的print语句改成储存在结果列表中即可,这里作为练习都写了一遍。先序遍历迭代栈 入栈出栈顺序# 先序遍历打印def preorderTraversal(root): if not root: return stack = [root] while stack: cur = stack.pop() print(cur.原创 2021-05-04 17:26:49 · 942 阅读 · 4 评论 -
异或运算
异或运算三个性质:任何数和 0做异或运算,结果仍然是原来的数任何数和其自身做异或运算,结果是 0异或运算满足交换律和结合律位运算(包含异或运算)都是针对二进制数的运算,因此输入十进制整数,并不是直接在十进制意义下进行运算,而是对对应的二进制进行运算。...原创 2020-09-28 09:26:42 · 1143 阅读 · 0 评论 -
图的应用——最小生成树(MST)
文章目录概念定义性质算法Prim想法算法代码Kruskal想法算法代码概念定义带权无向连通图权值之和最小的生成树就是最小生成树性质不一定唯一唯一的情况:所有边的权重都不相同原图本身就是生成树(边数等于节点数减一时)最小生成树的权重之和唯一,且是最小的最小生成的边数是顶点数减1算法基本想法:贪心法——每一步做出最好的选择基本思想:GENRIC_MST(G){ T=NULL; while T 未形成一颗生成树: do 找到一条最小代原创 2020-09-04 09:50:29 · 1883 阅读 · 0 评论 -
图——基本概念与遍历
文章目录逻辑结构——基本概念图的存储邻接矩阵邻接表十字链表邻接多重表图的遍历广度优先搜索深度优先搜索图的应用最小生成树逻辑结构——基本概念线性表、树可以为空,但是图不能为空简单图:无重复边,不存在节点到自身的边;反之就是多重图无向完全图:任意两个顶点之间都存在边有向完全图:任意两个顶点之间都存在方向相反的弧生成子图:子图含有原图的所有顶点无向图——连通——顶点之间存在路径——连通图——最少n-1条边有向图——强连通——两个顶点之间同时存在双向的路径——强连通图——最少n条边连通分量(极原创 2020-09-04 09:45:06 · 258 阅读 · 0 评论 -
树
文章目录基本概念性质二叉树满二叉树完全二叉树二叉排序树(BST )应用平衡二叉树应用线索二叉树:shit:哈夫曼树应用树的存储结构二叉树重要性质二叉树的存储结构遍历树、森林与二叉树的转化转换遍历森林的遍历树的应用并查集基本概念层次——深度;从上往下(一般从1开始)高度:从下往上有序树:子树从左到右有顺序,否则就是无序树性质节点数=总度数+1树的度:各节点度的最大值度为m的树第i层最多有mi−1m^{i-1}mi−1个节点高度为h的m叉树最多有mh−1m−1\frac{m^{h}-1原创 2020-09-02 18:13:06 · 130 阅读 · 0 评论 -
排序
排序重点在内部排序基本概念稳定性:关键字相同的元素,在排序前后的相对位置不变稳定性不是衡量算法优劣的标准,只是一个特性,反应算法性能的是算法的时空复杂度内部排序:指在排序期间元素全部存放在内存中的排序外部排序:指在排序期间元素无法全部同时存放在内存中,必须在排序的过程中根据要求不断地在内、外存之间进行移动内部排序插入排序每次将一个待排序的序列插入已经排好序的序列中直接插入排序初始L[1]是一个已经排好序的子序列 对于元素L(i)(L(2)-L(n))插入到前面已经排好原创 2020-09-01 15:29:44 · 261 阅读 · 0 评论 -
查找
内容来源:王道考研——数据结构文章目录顺序查找折半查找分块查找B树基本内容查找插入删除对终端节点的删除操作对非终端节点的删除操作B+树散列表散列函数构造冲突处理开放定址法拉链法散列表查找填装因子填装因子顺序查找又叫线性查找,主要用于线性表中查找typedef struct { ElemType *elem; int TableLen ; } SSTable ;int search_seq (sstable st, ElemType key) { //设置哨兵,不用对于原创 2020-08-30 14:05:21 · 242 阅读 · 0 评论 -
字符串匹配
文章目录朴素模式匹配KMP算法基本思想next数组确定代码实现KMP算法改进在主串中找到和模式串相同的子串,并返回其所在位置。下面考虑的主串和模式串的的初始位置都是从数组下标为1的位置。朴素模式匹配将主串中和模式串长度相同的子串和模式串一次比较,只要有一个字符不匹配,就舍弃当前子串比较下一个子串主串长度为n,模式串长度为m,则最坏时间复杂度为O(nm)O(nm)O(nm)(要匹配(n-m+1)m次)朴素模式四配算法的缺点: 当某些子串与模式串能部分四配时,主串的扫描指针 i 经 常回溯,导致时间开原创 2020-08-28 17:00:28 · 157 阅读 · 0 评论 -
栈和队列基本应用
文章目录栈括号匹配问题表达式计算基本概念表达式转化表达式求值(算法实现)栈递归应用队列的应用树的层次遍历图的广度优先遍历在操作系统中的应用栈括号匹配问题基本想法:最后出现的左括号最先匹配不匹配的情况:左右括号不匹配左括号单身(最后栈不为空)右括号单身(栈空但是还有右括号)表达式计算基本概念按照操作符与操作数的相对位置分成三种计算方式:后缀表达式(逆波兰表达式):操作符在两个操作数的后面前缀表达式(波兰表达式):操作符在两个操作数的前面中缀表达式:操作符在两个操作数的中原创 2020-08-28 15:20:07 · 258 阅读 · 0 评论 -
线性表备忘
常见时间复杂度O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)O(1)<O\left(\log _{2} n\right)<O(n)<O\left(n \log _{2} n\right)<O\left(n^{2}\right)<O\left(n^{3}\right)<O\left(2^{n}\right)<O(n !)<O\left(n^原创 2020-08-28 14:23:28 · 101 阅读 · 0 评论 -
循环队列队空队满判断
为了方便对于循环队列进行队空队满判断,牺牲一个存储单元。记rear、head分别为队尾队头指针则:队满:(rear+1)%maxsize=head队空:rear=head插入元素后,rear=(rear+1)%maxsize删除元素后,head=(head+1)%maxsize...原创 2020-08-27 14:35:14 · 2992 阅读 · 0 评论