树型结构PPT课件

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

树的定义(递归)
每个元素称为结点; 有一个特定的结点,称为根结点或树根; 除根结点外,其余结点被分成m个互不相交
的有限集合,而每一个子集又都是一棵树。
树的基本概念
度:入度,出度; 祖宗,父亲,兄弟,儿子,子孙; 树的深度(层次); 路径; 森林。
树的表示方法
图形表示法; 括号表示法。
【例题】二叉树的遍历
【样例输入】 abdec dbeac
【样例输出】 debca
题目分析
先序遍历先访问根,中序遍历在中间访问 根,也就是说中序遍历中根将整个遍历序 列分割成了左子树和右字树两部分。那么 我们便有思路了。我们从先序遍历中从前 往后每次取一个根结点,然后将当前的中 序遍历序列从此根结点处分开,再递归地 进行向下的递推。
树的存储结构
孩子表示法: 利用单链表,每个结点包括一个数据域
和若干个指针域,每个指针都指向一个孩 子结点。由于一般树的各个结点的孩子数 不确定,所以指针数应该等于整棵树的度。 当树的度越大时,空指针域所占比例也越 大,给存储空间造成很大浪费。
const m=10{树的度} type tree=^node;
node=record data:char; child:array [1..m] of tree
end; var t:tree;
树的存储结构
父亲孩子表示法=父亲表示法+孩子表示法
const m=10;
type tree=^node;
node=record
data:char;
trFra Baidu biblioteke;
child:array[1..m] of
father:tree
end;
var t:tree;
树的存储结构
孩子兄弟表示法: 每个结点包括一个数据域和两个指针域,
一个指针指向该结点的第一个孩子结点, 一个指针指向该节点的下一个兄弟结点。
const m=10; type tree=^node;
node=record; data:char; firstchild,next:tree;
二叉树的遍历
先序遍历:根,左儿子,右儿子; 中序遍历:左儿子,根,右儿子; 后序遍历:左儿子,右儿子,根。
【例题】二叉树的遍历
输入一棵二叉树的先序和中序遍历序列, 输出其后序遍历序列。 输入:输入文件为tree.in,共两行,第 一行一个字符串,表示树的先序遍历,第 二行一个字符串,表示树的中序遍历。树 的结点一律用小写字母表示。 输出:输出文件为tree.out,仅一行,表 示树的后序遍历序列。
输出:输出文件名为word.out,该文件中仅 包含一个整数,该整数为单词列表对应的单词 查找树的结点数(包括根结点)。对于上图所 示样例,你应输出13。
题目分析
这道题思路比较简单,我们只需要模拟建 树的过程就可以了。为了方便的对树从上 往下查找,我们可以使用孩子表示法。
二叉树
二叉树(binary tree,简写成BT)是一种 特殊的数据结构,它的特点是每个结点至 多只有两棵子树,即二叉树中不存在度大 于2的结点,而且二叉树的子树有左子树, 右子树之分,孩子有左孩子,右孩子之分, 其次序不能颠倒,所以二叉树是一棵有序 树。它有五种基本形态。
特征:叶结点只可能出现在最下面两层上; 对任一结点,若其右子树深度为m,则其左 子树的深度必为m或m+1。
完全二叉树的性质
具有n个结点的完全二叉树的深度为 trunc(log n)+1。
一颗有n个结点的完全二叉树,对于任一个 编号为i的结点,有: (1)如果i=1,则结点i此用为性价根质值具,,有一最定无高要的注父使意节点; 如果i>1,则其父节点编号为掌握i。 div 2。 (2)如果2*i>n,则结点i无叶节点;否 则左孩子编号为2*i。 (3)如果2*i+1>n,则结点i无右孩子; 否则右孩子编号为2*i+1。
二叉树的存储结构
最常用的是顺序存储结构,将每个结点按 自上而下,从左到右的顺序连续编号,将 编号作为数组的下标变量值。 const n=10;{结点数} var data:array[1..n] of char; lchild,rchild:array[1..n] of integer; 这种结构可以很方便地从根结点向下遍历。
纯理论的东西,没有使用价值。
树的存储结构
父亲表示法: 定义一个数组,每个数组元素为一个记录,
除了存放一个结点的数据信息外,还存放该 结点的父结点编号。数据结构定义如下:
const m=10;{树的度} type node=record
data:integer; parent:integer; end; var tree:array [1..m] of node;
二叉树的性质
在二叉树的第i层上至多有2^(i-1)个结点。 深度为k的二叉树至多有2^k-1个结点。一
棵深度为k且有2^k-1个结点的二叉树称为 满二叉树。 以上两条性质可以通过递推及等比数列求 和推出。
完全二叉树
定义:如果对一个满二叉树的结点从根结 点起,自上而下,自左到右进行连续编号, 那么深度为k,有n个结点的二叉树当且仅 当每一个结点都与深度为k的满二叉树中编 号从1到n的结点一一对应时,称为完全二 叉树。
end; var t:tree;
【例题】单词查找树
在进行文法分析的时候,通常需要检测一个单词是否在我们的单 词列表里。为了提高查找和定位的速度,通常都画出与单词列表对应 的单词查找树,其特点如下:
(1)根结点不包含字母,除根结点外每一个结点都仅包含一个大写 英文字母;
(2)从根节点到某一节点,路径上经过的字母一次连起来所构成的 字母序列,称为该节点对应的单词。单词列表中的每个单词,都是该 单词查找树某个结点所对应的单词;
(3)再满足上述条件下,该单词查找树的结点数最少。
(4)例如下图:
A AN ASP ASC ASCII BAS BASIC
【例题】单词查找树
要求:对一个确定的单词列表,请统计对应 的单词查找树的结点数(包括结节点)。
输入:输入文件名为word.in,该文件为一 个单词列表,每一行仅包含一个单词。每个单 词仅由大写的英文字母组成,长度不超过63个 字母。文件总长度不超过32K,至少有一行数 据。
相关文档
最新文档