数据结构与算法
文章平均质量分 78
retreatweb
java 后端程序员
展开
-
树
节点:树的最基本组成元素,常常包含一个数据元素以及若干个指针用于指向其他节点;节点的度(degree):节点拥有的子树的个数树的度:树中所有节点的最大度即该树的度叶子节点:度为0的节点被称为叶子节点或者终端节点分支节点:度不为0的节点称为分支节点或者非终端节点子节点、父节点、兄弟节点:节点的子树的根被称为该节点的子节点,该节点被称为子节点的父节点,具有相原创 2017-01-04 22:31:41 · 195 阅读 · 0 评论 -
排序算法(中)
本文接着排序算法(上)的内容继续介绍交换排序(冒泡排序和快速排序)和插入排序(插入排序、Shell排序)。原创 2017-08-08 07:37:24 · 289 阅读 · 0 评论 -
排序算法(上)
排序的基本概念算法优劣的描述对于一个排序算法一般从以下三个方面来评估算法的优劣:时间复杂度:主要分析关键字的比较次数和记录的移动次数空间复杂度:分析排序算法所需要的额外内存稳定性:若两个记录的关键字的值相等,且排序后二者的相对次序没有发生变化,则次排序算法是稳定的,否则就不是稳定的。内排和外排内部排序和外部排序:整个过程不需要借助外部存储器,均在内存中完成,成为内部排序,否则成为外部原创 2017-02-26 11:31:20 · 291 阅读 · 0 评论 -
红黑树(下)
本文是红黑树系列文章的第三篇,前两篇分别介绍了2-3树和红黑树常用操作的理论,本文主要介绍红黑树的实现。原创 2017-01-21 03:28:53 · 200 阅读 · 0 评论 -
红黑树(中)
红黑二叉查找树背后的基本思想是标准的二叉查找树(完全由2-节点构成)和一些额外信息(替换3-节点)来表示2-3树中的节点分为两种类型:红链接将两个2-节点链接起来构成一个3-节点,黑链接则是2-3树中普通的节点。原创 2017-01-21 02:13:22 · 169 阅读 · 0 评论 -
红黑树(上)
排序二叉树虽然效率较高,可以快速 的检索,但是当要插入的节点本身就是有序的,那么所有的节点构成链表。如果插入的节点本身按照从大到小的顺序插入,那么所有节点都只有左子节点,如果节点本身按照从小到大的顺序排列,那么所有节点都只有右子节点,排序二叉树变为普通的链表,此时其检索效率就会很低。为了改进排序二叉树的不足,本文从2-3查找树谈起,构造一种二分查找树——红黑树,介绍红黑树的插入删除等操作。原创 2017-01-20 23:55:42 · 216 阅读 · 0 评论 -
线索二叉树(上)
遍历二叉树指的是按照某种规律以此访问二叉树中所有的节点,实际上就是讲非线性结构的二叉树中的节点排列在一个线性序列的过程。6. 1 二叉树遍历概述如果二叉树底层是用顺序存储结构来保存的,那么遍历二叉树中的节点,直接遍历底层数组即可,如果采用的是链式存储结构保存的,那么有深度优先遍历和广度优先遍历两种遍历方法,本文主要介绍链式存储结构的二叉树的遍历。原创 2017-01-05 22:29:08 · 209 阅读 · 0 评论 -
栈
栈(stack)又称堆栈,是一运算受限的线性表。其限制是只允许在线性表的一端进行插入与删除操作,不允许在 其他任何地方进行插入、删除、读取等操作。表中进行读取插入删除的一端称为栈顶(top),栈顶保存的元素称为栈顶元素,另外一端称为栈底(bottom)。当栈中没有元素时称为空栈,向一个栈中插入元素又称为入栈或进栈,从栈中删除一个元素称为出栈或退栈。原创 2017-01-01 02:13:27 · 329 阅读 · 0 评论 -
哈夫曼树
哈夫曼(Huffman)树又称为最优二叉树,它是一种带权路径长度最短的树,在信息检索中非常有用。本文主要介绍哈夫曼树的概念、哈夫曼编码、哈夫曼树的实现。原创 2017-01-10 23:45:23 · 623 阅读 · 0 评论 -
二叉树(下)
树、森林、二叉树由于二叉树是一种更确定的数据结构(每个节点最多只有两个子节点),因此它的增删和遍历都比一般的树更加方便和容易实现,反观树的每个节点由于子节点的个数不确定,因此它的增删和遍历都比较复杂。实际上,树、森林和二叉树作为树的类型,他们之间是可以互相转换的。本文主要介绍森林与二叉树的相互转换、树与森林的遍历。原创 2017-01-08 19:31:19 · 305 阅读 · 0 评论 -
队列
队列(queue)简称队,和堆栈一样,也是一种运算受限的线性表。其限制只允许在表的一端进行插入,被称为队尾(rear),另外一端只允许删除,被称为队头(front)。向队尾插入元素称为入队或进队,新元素入队后称为新的队尾元素,从队头删除元素称为离队或出队,其后续元素成为新的队头元素。由于队列的插入和删除操作分别在队列的队尾和队头进行,所以每个元素必然按照进入的顺序离队,也就是先进队的元素先原创 2017-01-01 11:37:39 · 268 阅读 · 0 评论 -
二叉查找树
二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树。本文主要介绍二叉查找树的基本操作。原创 2017-01-15 07:41:13 · 286 阅读 · 0 评论 -
线索二叉树(下)
采用二叉链表和三叉链表作为二叉树的存储结构,只能找到节点的左右孩子和父节点(三叉链表),而不能直接找到该节点的直接前驱和直接后驱的相关信息,只能在对二叉树的遍历中才能得到,这显然不是最直接和最便利的方法。为了直接得到任何一个节点的直接前驱和直接后驱的信息,需要对二叉树进行线索化,本文主要介绍线索二叉树的概念机线索二叉树的遍历。原创 2017-01-13 23:57:46 · 239 阅读 · 0 评论 -
线性表
线性结构是最简单也是最常用的数据结构之一。线性数据结构的特点是:在数据元素的有限集中,除了第一个元素没有直接前驱,最后一个元素没有直接后继外,其他元素有且仅有一个前驱和一个后继。线性表有两种存储实现方式,分别是顺序存储和链式存储,本文主要介绍两种方式实现线性表,并对他们的优缺点做一简单的比较。原创 2016-12-31 16:41:03 · 260 阅读 · 0 评论 -
二叉树(上)
树中节点的度数没限制,而二叉树中树的度数最大为2,无序树的节点无左右之分,而二叉树的节点有左右之分,也即二叉树是有序树。本文主要介绍二叉树的基本性质以及二叉树的顺序存储和链式存储的实现。原创 2017-01-04 22:33:40 · 443 阅读 · 0 评论 -
排序算法(下)
归并排序归并排序是将两个较小的有序数组归并为一个较大的有序数组。将一个数组排序,可以先将该数组分成两半,将这两半分别排序,最后将两个有序的子序列归并。根据这种思想,人们发明了一种简单的递归排序算法,归并排序。 快速排序是应用最广泛的的排序算法,采用递归调用对元素进行排序,是基于比较排序算法的一个著名算法。原创 2017-08-08 12:28:53 · 187 阅读 · 0 评论