第1章 数据结构与算法(8)

2020-02-21 20:41

完全二叉树还具有以下两个性质:了解,不讲了 ①具有n个结点的完全二叉树深度为?log2n?+1。

②如果对一棵有n个结点的完全二叉树的结点按层编号,则对于编号为k(1≦k≦n)的结点有以下结论。

? 如果k=1,则结点k没有父结点,是二叉树的根;如果k>1,则该结点的父结点编号为INT(k/2)。 ? 如果k≦n,则结点k左子结点编号为2k;否则该结点没有左子结点(显然也没有右子结点)。

? 如果2i+1≦n,则结点k左子结点编号为2k+1;否则该结点没有右子结点。

考点17 二叉树的存储结构 了解

在计算机中,二叉树通常采用链式存储结构。

用于存储二叉树中各元素的存储结点也由两部分组成:

数据域和指针域。

由于每一个元素可以有两个后件(即两个子结点),因此用

于存储二叉树的存储结点的指针域有两个:一个用于指向该结点的左子结点的存储地址,称为左指针域;另一个用于指抽该结点的右子结点的存储地址,称为右指针域。如下图所示。

其中,L( i )为结点i的左指针域,即L( i )为结点i的左子结点的存储地址;R( i )为结点i的右指针域,即R( i )为结点i的右子结点的存储地址,V( i )为数据域。

由于二叉树的存储结构中每一个存储结点有两个指针,因此二叉树的链式存储结构也称为二叉链表。

对于满二叉树与完全二叉树来说,根据完全二叉树的性质②,可以按层序进行顺序存储,这样不仅可以节省存储空间,也可以方便地确定每一个结点的父结点与左右子结点的位置,但顺序存储对于一般的二叉树不适用。

*考点18 二叉树的遍历 重点

二叉树的遍历是指不重复地访问二叉树中的所有结点。

由于二叉树是一种非线性结构,因此对二叉树的遍历要比遍历线性表复杂得多。

在遍历二叉树的过程中,一般先遍历左子树,然后再遍历右子树。在先左后右的原则下,根据访问要结点的次序,二叉树的遍历可以分为3种:前序遍历、中序遍历、后序遍历。

1、前序遍历(DLR)

所谓前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后访问右子树。

若二叉树为空,则结束返回,否则: a.访问根结点。

b.前序遍历左子树。

c.前序遍历右子树。 一句话:根左右

2、中序遍历(LDR)

所谓中序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后访问右子树。

若二叉树为空,则结束返回,否则: a.中序遍历左子树。 b.访问根结点。 c.中序遍历右子树。 一句话:左根右

3、后序遍历(LRD)

所谓后序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点;并且遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。

若二叉树为空,则结束返回,否则: a.后序遍历左子树。 b.后序遍历右子树。 c.访问根结点。 一句话:左右根

重要的例子:

例1:对下图二叉树进行前序遍历,结果为:FCADBEGHP 中序遍历,其结果为:ACBDFEHGP 称为该二叉树的中序序列。 后序遍历,其结果为:ABDCHPGEF 称为该二叉树的后序序列。

例2:已知一棵二叉树的前序遍历结果为:FCADBEGHP,中序遍历结果为:ACBDFEHGP,画出这棵二叉树,并写出后序遍历结果。

解:根据前序和中序遍历结果,构造出这棵二叉树如上图所示,则后序遍历结果为:ABDCHPGEF

七、查找技术

*考点19 顺序查找 重点

顺序查找又称顺序搜索。它一般是指在线性表中查找指定的元素,其基本方法如下:

从线性表的第一个元素开始,依次将线性表中的元素与被查元素进行比较,若相等,则表示找到(即查找成功);若线性表中所有的元素都与被查元素不相等,则表示线性表中没有要找的元素(即查找失败)。

在进行顺序查找过程中,如果线性表中的第一个元素就是被查找元素,则只需做一次比较就查找成功,查找效率最高;但如果被查的元素是线性表中的最后一个元素,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中所有的元素进行比较,这是顺序查找的最坏情况。

在平均情况下,利用顺序查找法在线性表中查找一个元素,大约要与线性表中一半的元素进行比较。

由此可以看出,对于大的线性表来说,顺序查找的效率很低。虽然顺序查找的效率不高,但在下列两种情况下,也只能采用顺序查找:

? 如果线性表是无序的(却表中的元素是无序的),则不管是顺序存储结构还是链式存储结构,都只能顺序查找。 ? 即使是有序线性表,如果采用链式存储结构,也只能用顺序查找。

*考点20 二分查找 重点

二分查找只适用于顺序存储的有序表。

在此所说的有序表是指线性表中的元素按值非递减排列,即从小到大,但允许相邻元素值相等。

设有序线性表的长度为n,被查元素为x,则二分查找的方法如下:

①将x与线性表的中间项进行比较。

②若中间项的值等于x,则说明查到,查找结束。

③若x小于中间项的值,则在线性表的前半部分(即中间项以前的部分)以相同的方法进行查找。

④若x大于中间项的值,则在线性表的后半部分(即中间项以后的部分)以相同的方法进行查找。

此过程一直进行到查找成功或子表长度为0(说明线性表中没有这个元素)为止。

显然,当有序线性表为顺序存储时才可能采用二分法查找,并且二分法查找的效率要比顺序查找高得多。

重点:

对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较

logn

2

次,而顺序查找则需要比较n次。

八、排序技术

排序也是数据处理的重要内容。

排序是指将一个无序序列整理成按值非递减顺序排列的有


第1章 数据结构与算法(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:如何用WinPE系统安装Win7系统

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: