摘要:
一、之前给出的二叉树遍历算法都采用的是递归算法。递归算法虽然结构简洁,但在时空开销上相对较大,从而导致运行效率较低,并且有有些程序设计环境不支持递归,这就要求将递归算法转换成非递归算法。 二、将递归算法转换为非递归算法有两种方式:一种是直接转换法,不需要回溯;另一种是间接转换法,需要回溯。直接转换法 阅读全文
摘要:
一、二叉树的遍历的定义 1.二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问依次且仅被访问依次。树的结点之间不存在唯一的前驱和后继关系,在访问一个结点后,下一个被访问的结点面临着不同的选择,因此,二叉树有多种遍历方 阅读全文
摘要:
一、二叉树的定义 1.二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两颗互不相交的、分别称为根结点的左子树和右子树的二叉树组成。 2.二叉树的特点: 每个结点最多有两颗子树,所以二叉树中不存在度大于2的结点。 左子树和右子树是有 阅读全文
摘要:
一、树的定义 1.树(Tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、...Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree 阅读全文
摘要:
一、数组的定义:数组是n(n>=1)个相同数据类型的数据元素构成的占用一块地址连续的内存单元的有限集合。所有的线性结构(包括线性表、堆栈、队列、串、数组和矩阵)的顺序存储结构实际上就是使用数组来存储。可见,数组是其他数据结构实现存续存储结构的基础,数组这种数据结构是软件设计中最基础的数据结构。 二、 阅读全文
摘要:
一、模式匹配 串的查找定位操作(也称为串的模式匹配操作)指的是在当前串(主串)中寻找子串(模式串)的过程。若在主串中找到了一个和模式串相同的子串,则查找成功;若在主串中找不到与模式串相同的子串,则查找失败。两种主要的模式匹配算法是Brute Force算法和KMP算法。 二、Brute Force算 阅读全文
摘要:
一、串的定义:串(String)是由零个或多个字符组成的有限序列,又名叫字符串。 二、串中的字符数目n称为串的长度,零个字符的串称为空串(null string),它的长度为零。子串在主串中的位置就是子串的第一个字符在主串中的序号。 三、串的大小:首先比较每个字符对应的ASCII码,然后比较长度n。 阅读全文
摘要:
一、队列的链式存储结构:其实就是线性表的单链表,只不过它只能尾进头出而已,简称为链队列。 二、将队头指针front指向链队列的头结点,队尾指针rear指向终端结点。空队列时,front和rear都指向头结点。 三、在可以确定队列长度最大值的情况下,建议用循环队列,如果无法估计预估队列的长度,则用链队 阅读全文
摘要:
一、队列:队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。 二、队列在程序设计中的应用:键盘输入、操作系统多个程序因需要通过一个管道输出而按先后次序排队等 阅读全文
摘要:
一、汉诺塔问题描述 设有三根标号为A,B,C的柱子,在A柱子上放着n个盘子,每个逗比下面的略小一点,要求把A上的盘子全部转移到C上,移动的规则是:①一次只能移动一个盘子;②移动过程中大盘子不能放在小盘子上面;③在移动过程中盘子可以放在A,B,C的任意一个柱子上。 二、用递归方法求解n个盘子的汉诺塔问 阅读全文