数据结构
文章平均质量分 88
一个程序渣渣的小后院
这个作者很懒,什么都没留下…
展开
-
数据结构-----AVL树的旋转操作
本文主要讲解AVL的旋转操作,供自己复习用,如有不对之处请指出。另外图片是从链接处的大神那复制的,感觉文章写的很好,可以去学习。http://www.cnblogs.com/QG-whz/p/5167238.html具体内容可以参考链接处的讲解。AVL树定义:一颗空的二叉树是AVL树;如果T是一棵非空的二叉树,TL和TR分别是其左子树和右子树,那么当T满足以下条件时,T是一棵AVL原创 2016-12-28 18:25:17 · 428 阅读 · 0 评论 -
数据结构-----红黑树的插入操作
红黑树是一棵二叉搜索树;树种每一个节点的颜色不是黑色就是红色。本篇中只实现用节点的颜色来描述红黑树,性质如下:RB1:根节点和所有外部节点都是黑色;RB2:在根至外部节点路径上,没有连续两个节点是红色;RB3:在所有根至外部节点的路径上,黑色节点的数目都相同;实现红黑树,首先需要定义树节点,节点包括:1:节点颜色,黑色或者白色,用整型或者布尔类型表示,也可以预设两个宏;原创 2017-01-05 23:26:15 · 671 阅读 · 0 评论 -
数据结构-----AVL树的插入删除操作
对于AVL的插入和删除,主要利用的就是上篇文章所述的四种旋转操作,根据插入后不同的结构选用不同的方式复原平衡。首先对于插入操作,有以下几个步骤:步骤1:根据二叉树的性质:大的向右找,小的向左找。逐个比较要插入的值和节点的值的大小关系,找到应该插入的位置。步骤2:在插入的位置新申请一个节点,并返回该节点。步骤3:判断是否出现不平衡的情况,通过旋转操作恢复平衡。其次原创 2016-12-29 11:09:08 · 743 阅读 · 0 评论 -
数据结构-----最大堆的实现
定义:一棵大根树(小根树)是这样一棵树,其中每一个节点的值都大小(小于)或等于其子节点(如果有子节点的话)的值。一个大根堆(小根堆)既是大根树(小根树)也是完全二叉树。大根堆小根堆本篇主要实现大根堆的初始化,插入以及删除操作。在实现这些之前,先来简单介绍一下大根堆类的主要数据成员:私有成员变量:heap:一维数组,用于存储堆中的元素;heapSi原创 2017-01-06 20:45:41 · 2446 阅读 · 0 评论 -
数据结构-----图的拓扑排序和关键路径算法
在介绍拓扑排序和关键路径之前,先引入AOE网络的概念:该图为一个AOE网,顶点表示事件,如v1,v2,v3...。弧表示活动,如a1,a2,a3...,而每一条边表示的值为完成该活动所需的时间。比如上图中,完成活动a1需要6个单位的时间,完成活动a3需要5个单位的时间。AOE网络是一个加权有向图,即每一条边都是带方向且带有权值的。对于一个有向边,箭头指向的点为终点,另一个点则是原创 2016-12-30 19:28:16 · 10152 阅读 · 1 评论 -
数据结构-----跳表
链表同数组比较,链表的插入删除操作复杂度是O(1),然而如果想要查找一个节点,你可能会这么写:LinkedNode<T> *targetNode = headerNode;while(targetNode){ if(targetNode->element == theElement) return targetNode; targetNode = targetNo原创 2017-03-17 23:23:58 · 13278 阅读 · 9 评论 -
数据结构-----二叉树,树,森林之间的转换
图片和转换步骤来自这里 本文主要描述具体实现用一种略微老土的话描述:二叉树:每一节点最多有2个子节点,左边的叫左节点,右边的叫右节点,自己叫根节点。树:每个节点的子节点数量不受限制。森林:由若干个树构成的整体。完了。所以在你回忆完二叉树老生常谈的四种遍历后,又有那么一丁丁想要进军普通树的欲望的话,想想每个树节点应该怎么定义(毕竟想要转换成一个东西,好歹应该先弄清它里面是如何存数据的)。树节点每个树原创 2017-03-28 22:02:41 · 1500 阅读 · 0 评论 -
数据结构-----Trie树
Trie树Trie树,又称字典树,前缀树,单词查找树。是字符串算法中一个比较基础的结构。在字符串查找方面有着线性时间的查找速度,是因为查找时间与Trie中的数据总量无关,只与待查找的字符串的长度有关。字典树可以应用在多少字符串查找问题上,比如说,给定一个非常大的文本,文本中每一行是一个单词,然后查询这些文本中是否包含某个字符串,或者询问某个字符串出现的次数。再比如Trie + KMP算法就构成了AC原创 2017-05-24 01:44:37 · 569 阅读 · 0 评论 -
数据结构-----基于双数组的Trie树
Trie树简介Trie树也称字典树,在字符串的查找中优势比较明显,适用于在海量数据中查找某个数据。因为Trie树的查找时间和数据总量没有关系,只和要查找的数据长度有关。比如搜索引擎中热度词语的统计。除此之外也可用于将数据按字典序排序。 另外Trie树是典型的空间换时间的数据结构,构建一颗Trie树需要花费比较大的内存空间。简单的Trie树的实现有两种方式,每个节点存储一个子节点数组,或者用链表将每原创 2017-05-24 19:13:45 · 3094 阅读 · 1 评论