数据结构
文章平均质量分 81
Kavin_Liang
Stay hungry. Stay foolish
展开
-
03-树2 List Leaves (25分)
03-树2 List Leaves (25分)Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. Input Specification: Each input file contains one test case. For each case,原创 2015-10-19 19:02:02 · 2412 阅读 · 0 评论 -
二叉搜索树
二叉搜索树二叉搜索树:是一颗二叉树但是其根节点的只要比左节点大比右节点小。 二叉树的遍历给定一棵树对其进行访问 1.先序遍历 (1). 访问根节点 (2). 先序遍历其左子树 (3).先序遍历其右子树 其上图二叉树先序遍历的结果为:ABDFECGHI 其代码实现为:void preOrderTraver(BinTree root) { i原创 2015-10-17 11:01:21 · 904 阅读 · 0 评论 -
图的表示和遍历
图的表示图(Graph)是由顶点(Vertex)和边(Edge)构成的一种集合,及 G=(V,E)G = (V, E),图在数据结构中有两种表示方式:邻接矩阵和邻接链表邻接矩阵对于图G=(V,E)G = (V, E)的邻接矩阵的表示方式,通常是将图G的节点编为0,1,2,3,...,|V−1|0, 1, 2, 3, ..., |V-1|,这种编号是任意的也可以从1开始进行编号,那么G的邻接矩阵表示由原创 2015-10-13 09:07:05 · 1192 阅读 · 0 评论 -
归并排序与快速排序
分治法分治法的思想:将原问题分解为几个规模较小但类似原问题的子问题,递归的求解这些子问题,然后合并这些子问题的解来建立原问题的解。及分而治之分治模式在每层递归时都有三个步骤: 分解原问题为若干子问题,这些子问题是原问题规模较小的实例 解决这些子问题,递归地求解各子问题。然而,若子问题的规模足够小,则直接求解。 合并这些子问题的解成原问题的解。归并排序归并排序算法完全遵循分治模式。只管上其操作如原创 2015-11-19 10:12:24 · 1861 阅读 · 1 评论 -
07-图6 旅游规划 (25分)
07-图6 旅游规划 (25分)有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路原创 2015-10-31 19:25:00 · 3183 阅读 · 0 评论 -
最短路径问题
最短路径1.1 最短路径的定义 其数学表现形式为: 在最短路径问题中,我们给定一个带权重的有向图G=(V, E) 和权重函数ω:E→R\omega: E \to R, 该权重函数将每条边映射到实数值的权重上,图中一条路径p=<v0,v1,...,vk>p = <v_{0}, v_{1}, ... , v_{k}>的权重ω(p)\omega(p)是构成该路径的所有边的权重之和: δ(p)={mi原创 2015-10-27 15:25:53 · 2119 阅读 · 0 评论 -
最小生成树
最小生成树最小生成树的定义给定一个图G=(V,E)G = (V, E), 并且对于每条边(u,v)∈E(u, v) \in E的权重使用 ω(u,v)\omega(u, v) 来表示。我们希望找到一个无环子集T⊆ET \subseteq E, 既能够将所有的节点连接起来,又具有最小的权重,即 ω(T)=∑(u,v)∈Tω(u,v)\omega(T) = \sum_{(u, v) \in T} \o原创 2015-10-31 20:08:08 · 842 阅读 · 0 评论 -
堆排序
堆排序堆排序是建立在数据结构堆上的一种操作。堆排序最简单的一种操作就是,先建立一个堆,然后依次弹出堆中的元素,使用临时数组保存。最后在把临时数组赋值给原数组。(对堆操作不熟悉的请先看数据结构之堆) 其代码为: 由于需要建一个堆,因此产生额外的空间,那么是否可以直接在元素组上建立一个堆呢? 答案是肯定的。因此,堆排序另外一个优化版本 1. 将要排序的数组arr从0到i(开始时i = arr.le原创 2015-11-14 12:06:44 · 371 阅读 · 0 评论 -
07-图4 哈利·波特的考试
07-图4 哈利·波特的考试哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。现在哈利·波特的手里有原创 2015-10-28 19:53:35 · 1497 阅读 · 0 评论 -
Saving James Bond - Easy Version
Saving James Bond - Easy VersionThis time let us consider the situation in the movie “Live and Let Die” in which James Bond, the world’s most famous spy, was captured by a group of drug dealers. He was原创 2015-10-14 15:11:34 · 611 阅读 · 0 评论 -
03-树3 Tree Traversals Again (25分)
03-树3 Tree Traversals Again (25分)An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered f原创 2015-10-20 16:30:24 · 8464 阅读 · 2 评论 -
数据结构之堆
堆数据结构堆是一种特殊的数据结构,也可以称为优先级队列。堆可以近似的看成是一颗完全的二叉树。既可以使用链表实现也可以使用数组实现。但是使用数组实现比较方便。其使用数组实现的一个堆如下图所示。 堆可以分为最大堆和最小堆,堆具有一个非常重要的性质: 对于最大堆:父节点的值要比其两个子节点(如果存在)大。 对于最小堆:父节点的值要比其两个子节点(如果存在)小。 其数学表现形式为: 最大堆: A原创 2015-11-13 21:15:40 · 516 阅读 · 0 评论