以邻接表为例,以字符串ABCDE作为案例。 广度优先遍历(BFS) 基本思路是: 用集合set保存已访问顶点,避免重复访问 用队列queue实现层级遍历(BFS)的顺序 具体...
以邻接表为例,以字符串ABCDE作为案例。 广度优先遍历(BFS) 基本思路是: 用集合set保存已访问顶点,避免重复访问 用队列queue实现层级遍历(BFS)的顺序 具体...
递归 何为递归 递归是调用自身(Call Self)的技术与艺术 递归将大问题分解为相似的小问题去解决 递归是分治算法的一种,分治算法的基本思想是把问题分解为多个较小的子问题...
邻接矩阵(adjacency matrix) 有向图 假设有5个城市,名字依次叫做ABCDE。 adjacency_matrix[i][j] 表示从i到j是否具有有向边。 有...
图 图的含义 图是由顶点(vertice)和连接顶点的边(edge)组成的一种数据结构。 顶点(vertice)就是构成图的数据元素,表示图中的一个个节点。图中的每个顶点可以...
链式实现:指向孩子节点的指针 使用“指向孩子节点的指针”,从root节点开始,使用指针将所有节点连成一个整体。 这里我还实现了广度优先遍历(BFS)和深度优先遍历(DFS)算...
树 树(Tree)是一种层级的(hierarchical)数据结构。由节点(Node)和边(Edge)组成。 术语: 根节点(Root Node):最高层级节点。 双亲节点(...
队列 队列(queue)是一种先进先出(first-in, first-out)(FIFO)的数据结构。 允许添加元素的一端为队尾(rear),允许删除元素的一端为队头(fr...
栈 栈是一种后进先出(last-in, first-out)(LIFO)的数据结构。 允许添加元素的一端为栈顶(top),另一端为栈底(bottom)。 栈的空间复杂度为O(...
链表实现 链表 v0:最简单的单链表 定义了两个类,节点类Node和列表本身的LinkedList。 LinkedList只做了一件事,作为表头(头指针)链接到第一个节点No...
复习序列操作 通用序列操作(内置序列适用) 运算解释x in sx 是否被包含于 sx not in s上述取反s + ts与t相拼接s * n 或 n * ss与自身进行n...
简介 线性表很符合人们的基本认知,各种各样的列表、清单、条目的抽象模型就是线性表。例如, ABCDEFG, 1234567, 等等。 假设书架上排列着一堆书籍,分别是《西游记...
介绍 空间复杂度是衡量算法所用的内存空间的大小。 书中是这么说的: “一个程序在机器上执行时,除了需要寄存本身所用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的辅...
时间复杂度 案例1 考虑这样一个函数: 它实现了从1 + 2 + 3 + ... + n,即求解从1一直加到n的和是多少。 考虑这一条语句 total += i , 当我传入...
一个有趣的问题 假如你尝试进行这个计算: 有趣的是,结果居然是False。 那么0.3 为什么不等于 0.1 + 0.2 ? Python官方的解答 Python官网教程里特...
算法 严蔚敏《数据结构(C语言版)(第2版)》一书中,对算法的定义是这样的: 算法(Algorithm)是为了解决某类问题而规定的一个有限长的操作序列。 (额,反正我是看不懂...
参考自严蔚敏《数据结构(C语言版)(第2版)》。 我将书中的部分知识内容转换成Python对应的实现和应用,方便大家了解。本篇章会持续更新。 为什么要学习数据结构? 一,数据...