第六章 树和二叉树

合集下载

数据结构课后习题答案及解析第六章

数据结构课后习题答案及解析第六章

第六章树和二叉树(下载后用阅读版式视图或web版式可以看清)习题一、选择题1.有一“遗传”关系:设x是y的父亲,则x可以把它的属性遗传给y。

表示该遗传关系最适合的数据结构为( )。

A.向量B.树 C图 D.二叉树2.树最合适用来表示( )。

A.有序数据元素 B元素之间具有分支层次关系的数据C无序数据元素 D.元素之间无联系的数据3.树B的层号表示为la,2b,3d,3e,2c,对应于下面选择的( )。

A. la (2b (3d,3e),2c)B. a(b(D,e),c)C. a(b(d,e),c)D. a(b,d(e),c)4.高度为h的完全二叉树至少有( )个结点,至多有( )个结点。

A. 2h_lB.h C.2h-1 D. 2h5.在一棵完全二叉树中,若编号为f的结点存在右孩子,则右子结点的编号为( )。

A. 2iB. 2i-lC. 2i+lD. 2i+26.一棵二叉树的广义表表示为a(b(c),d(e(,g(h)),f)),则该二叉树的高度为 ( )。

A.3B.4C.5D.67.深度为5的二叉树至多有( )个结点。

A. 31B. 32C. 16D. 108.假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为( )个。

A. 15B. 16C. 17D. 479.题图6-1中,( )是完全二叉树,( )是满二叉树。

..专业知识编辑整理..10.在题图6-2所示的二叉树中:(1)A结点是A.叶结点 B根结点但不是分支结点 C根结点也是分支结点 D.分支结点但不是根结点(2)J结点是A.叶结点 B.根结点但不是分支结点 C根结点也是分支结点 D.分支结点但不是根结点(3)F结点的兄弟结点是A.EB.D C.空 D.I(4)F结点的双亲结点是A.AB.BC.CD.D(5)树的深度为A.1B.2C.3D.4(6)B结点的深度为A.1B.2C.3D.4(7)A结点所在的层是A.1B.2C.3D.4..专业知识编辑整理..11.在一棵具有35个结点的完全二叉树中,该树的深度为( )。

第6章树和二叉树

第6章树和二叉树
2.孩子表示法 孩子表示法 在结点中设置指向每个孩子的指针域, 在结点中设置指向每个孩子的指针域,利用指针 指向该结点的所有孩子结点。 指向该结点的所有孩子结点。 大多采用按树的度设置结点的指针域的个数。 大多采用按树的度设置结点的指针域的个数。
9
6.1.4 树的存储结构
3.孩子兄弟表示法 孩子兄弟表示法 在结点中设置两个指针域, 在结点中设置两个指针域,一个指针域指向该结 点的第一个孩子,另一个指针域指向其右兄弟。 点的第一个孩子,另一个指针域指向其右兄弟。
2
6.1.1树的定义 树的定义
结点的度:结点所拥有子树的个数称为结点的度。 结点的度:结点所拥有子树的个数称为结点的度。 子树 称为结点的度 树的度:树中所有结点的度的最大值称为树的度。 最大值称为树的度 树的度:树中所有结点的度的最大值称为树的度。 叶结点:度为零的结点称为叶结点。也称终端结点 终端结点或 叶结点:度为零的结点称为叶结点。也称终端结点或叶 子 分支结点:度不为零的结点称为分支结点。也称非终端 分支结点:度不为零的结点称为分支结点。也称非终端 结点。除根结点以外,分支结点也称为内部结点。 结点。除根结点以外,分支结点也称为内部结点。 孩子结点和双亲结点: 孩子结点和双亲结点:树中一个结点的子树的根结点称 为孩子结点。该结点就称为孩子结点的双亲结点。 为孩子结点。该结点就称为孩子结点的双亲结点。 兄弟结点:具有同一双亲的孩子结点互为兄弟结点。 兄弟结点:具有同一双亲的孩子结点互为兄弟结点。 结点的祖先:从根到该结点所经分支上的所有结点, 结点的祖先:从根到该结点所经分支上的所有结点,称 为结点的祖先。 为结点的祖先。
17
6.2.2 二叉树的性质
性质4 具有n( 性质 具有 (n>0)个结点的完全二叉树的深度 )个结点的完全二叉树的深度h= log 2 n + 1 证明: 证明: 根据完全二叉树的定义可知深度为h-1层及以上的结点构成 根据完全二叉树的定义可知深度为 层及以上的结点构成 满二叉树,因此由性质2得深度为 得深度为h的完全二叉树满足 满二叉树,因此由性质 得深度为 的完全二叉树满足 n>2h-1-1和n≤2h-1 和 整理后得到 2h-1≤n<2h 不等式两边取对数, 不等式两边取对数,得 h-1≤log2n<h 由于h为正整数 为正整数, 由于 为正整数,因此 h= log 2 n + 1

树和二叉树——精选推荐

树和二叉树——精选推荐

第6章 树和二叉树内容概要:本章主要介绍树,二叉树,最优二叉树的相关概念和操作,存储结构和相应的操作,并在综合应用设计中,给出了对应算法的C 语言实现。

教学目标1.理解各种树和森林与二叉树的相应操作。

2.熟练掌握二叉树的各种遍历算法,并能灵活运用遍历算法实现二叉树的其他操作。

3.熟练掌握二叉树和树的各种存储结构及其建立的算法。

4.掌握哈夫曼编码的方法。

5.通过综合应用设计,掌握各种算法的C 语言实现过程。

基本知识点:树和二叉树的定义、二叉树的存储表示、二叉树的遍历以及其它操作的实现、树和森林的存储表示、树和森林的遍历以及其它操作的实现、最优树和赫夫曼编码重点:二叉树的性质、二叉树的遍历及其应用,构造哈夫曼树。

难点:编写实现二叉树和树的各种操作的递归算法。

本章知识体系结构:课时安排:6个课时树的定义 树树的性质 树的逻辑表示法 树形表示法 树的存储结构 双亲存储结构 文氏表示法凹入表示法 括号表示法 孩子存储结构 孩子双亲存储结构二叉树二叉树的定义 二叉树的性质二叉树的逻辑表示法(采用树的逻辑表示法)二叉树的存储结构二叉树的顺序存储结构先序遍历 中序遍历 后序遍历二叉树的遍历 二叉树的链式存储结构(二叉链) 由先序序列和中序序列构造二叉树 由中序序列和后序序列构造二叉树二叉树的构造 二叉树的线索化 哈夫曼树二叉树和树之间的差别 二叉树与树、森林之间的转换二叉树和树课程数据结构教学教具多媒体课件学时2班级06网络教学日期/课时 /2课时教学单元第6章树和二叉树教学方法讲授(PPT)教学目标掌握树、二叉树的基本概念和术语,二叉树的性质教学重点二叉树的定义、二叉树的性质、链式存储结构教学难点二叉树的性质、链式存储二叉树的基本操作组织教学一、树的定义二、树的基本概念三、二叉树的定义、性质四、二叉树的顺序存储结构和链式存储结构五、小结作业复习本讲内容并预习下一讲内容课堂情况及课后分析课程数据结构教学教具多媒体课件学时2班级06网络教学日期/课时 /2课时教学单元第6章树和二叉树教学方法讲授(PPT)教学目标掌握二叉树遍历的三种方法及二叉树的基本操作教学重点二叉树的遍历算法教学难点中序与后序遍历的非递归算法组织教学一、复习二叉树的定义二、遍历二叉树的三种方法三、递归法遍历二叉树四、二叉树的基本操作五、总结作业复习本讲内容并预习下一讲内容课堂情况及课后分析课程数据结构教学教具多媒体课件学时2班级06网络教学日期/课时 /2课时教学单元第6章树和二叉树教学方法讲授(PPT)教学目标理解树与森林的转换,掌握哈夫曼树教学重点哈夫曼树教学难点树与森林的转换组织教学一、导入二、树与森林三、哈夫曼树四、小结作业习题6课堂情况及课后分析前面几章讨论的数据结构都属于线性结构,线性结构的特点是逻辑结构简单,易于进行查找、插入和删除等操作,可用于描述客观世界中具有单一前驱和后继的数据关系。

树和叉树(数据结构)

树和叉树(数据结构)

第六章树和二叉树 6.1树(tree)的概念在日常生活中,可以见到很多情形可以归结为树结构。

如:家族谱系、行政管理机构、DOS和Windows 磁盘文件管理系统等。

我们讨论的树和自然界的树在生长方向上正好相反,它是倒长的树,即根朝上,枝干和叶子朝下。

例1:某家族谱系的一部分例2:国家行政管理机构的一部分例3:DOS和Windows磁盘文件的一部分C:\TC20VC6.0数据结构课件数据结构讲稿第一章第二章……MyTc程序Tc1Tc2……MyVc程序Vc1Vc2……树是一种层次结构,属于非线性结构。

我们学过的线性表可以灵活组织数据,但它受到线性结构的限制,表达层次结构不太方便。

6.1.1树的定义·树T是n(n≥0)个结点的有限集合。

它满足:(1)仅有一个特定的结点,称为根(root)结点;(2)其余结点分为m(m≥0)个互不相交的非空有限集合T,1,T2,……,T m,其中每个集合自身又是一棵树,称为根的子树(subtree)。

·为了表述方便,把没有结点的树称为空树。

·树的定义具有递归性:即一棵树是由根及若干棵子树构成的,而子树又是由根及若干棵子树构成的,……。

表达树的方法通常有4种:树形、凹入、集合和广义表(1) 树形表示法AB C DE F G H(2)凹入表示法ABCEFDGH(3)集合嵌套表示法A○E C○F○G D○H B(4)广义表表示法T(A(B,C(E,F),D(G,H)))6.1.3 树的基本术语为了对树的形态表述清楚和形象,通常引用树和人的特征及术语来描述。

(1)结点和树的度(degree)结点所拥有的子树的个数称为该结点的度,而树中各结点的度的最大值称为该树的度。

AB C DE F G H如:·结点B、E、F、G和H的度数是0·结点C和D的度数都是2·结点A的度数是3;显然3也是树的度数(2)叶子(leaf)结点和分支结点度为0的结点称为叶子结点(终端结点);度不为0的结点称为分支结点(非终端结点)。

第六章树和二叉树.ppt

第六章树和二叉树.ppt

Y
D
N
Y a<60 E
E
N
A
Y
a<60 N D
C B D EA
Y a<80
a<70 N C
N a<90 Y
N
B
A
6.6 树的表示
6.6.1 树的存储结构
孩子链 表
孩子兄 弟链表
6.6.2 树的遍历
A
B
C
D
树的先根遍历算法描述如 下:
访问根结点。
EFG
H
按照从左到右的次序 先根遍历根的每一棵
之和

二叉树的带权外路径长度
n1
WPL (wi li )
i0
哈夫曼树定义为带权外路径长度最短的二叉树。 哈夫曼树不唯一
构造哈夫曼树
1、根据给定的n个权值{w1,w2,……,wn}构成n棵二叉树的集 合F={T1,T2,……,Tn},其中每棵二叉树Ti中都有一个权值为 wi的根结点,其左右子树均空。
子树。
I
J K L M 树的后根遍历算法描述如
下:
先序遍历:A B E F I
NO
GCDHJ KL NOM
按照从左到右的次序 后根遍历根的每一棵
子树。
后序遍历:E I F G B C J K N O L M H D A

访问根结点。
0 14 1
0
6 1
33
T;
8 01
4 A
0 2
41 2
CS
T : 00 ; : 01 A : 10 C : 110 S : 111
例 电文是{CAS;CAT;SAT;AT} 其编码 “11010111011101000011111000011000” 电文为“1101000” 译文只能是“CAT”

第6章树和二叉树

第6章树和二叉树

第6章树和二叉树第 6 章树和二叉树6.1 已知一棵树如图所示,回答下列问题:(1) 哪个是根结点?(2) 哪些是叶子结点?(3) 哪个是结点 G 的双亲?(4) 哪些是结点 G 的祖先?(5) 哪些是结点 B 的孩子?(6) 哪些是结点B的子孙?(7) 哪些是结点 E 的兄弟?(8) 结点 B 和 H 的层次号分别是什么 ?(9) 树的深度是多少?(10) 以结点 C 为根的子树的深度是多少? 【6.1 解】:(1) A(2) K, F,G,H,I,J(3) B(4) B,A(5) E,F,G(6) E,F,G,K(7) F,G(8) 2, 3(9) 4(10) 26.2 在结点个数为n(n>1)的各棵树中,最小的高度是多少?它有多少个叶结点?多少个分支结点?最大的高度树是多少?它有多少个叶结点?多少个分去结点?【6.2解】结点个数为n时,高度最小的树高度为1,有2层;它有n-1个叶结点,1个分支结点;高度最大的树的高度为n-1,有n层;它有1个叶结点,n-1个分支结点。

6.3简述树与二叉树的区别?【6.3解】二叉树的度最大为2,而树的度可以大于2;二叉树的每个结点的孩子有左、右之分,而树中结点的孩子无左右之分。

6.4 n(n>1)个结点的各棵二叉树中,最小的高度(h≥1)多少?最大的高度是多少?【6.4解】最小高度为:⎣⎦n2log+1,此时树为完全二叉树;最大高度为n,比如一棵斜二叉树。

6.5如果一棵树有n1个度为1的结点,有n2个度为2的结点,…,n m个度为m的结点,试问有多少个度为0的结点?试推导之。

【6.5解】设叶子结点数为n0,则树中结点数和总度数分别为: 结点数=n0+n1+n2+...+n m总度数=n1+2n2+...+m×n m结点数等于总度数加1,所以得到:n0=∑=+-miini21))1((6.6如果已知一棵二叉树有20个叶子结点,有10个结点仅有左孩子,15个结点仅有右孩子,求出该二叉树的结点数目。

云大《数据结构》课程教学课件-第6章 树和二叉树(147P)_OK

云大《数据结构》课程教学课件-第6章 树和二叉树(147P)_OK

^d ^ ^ e ^ 三叉链表
3)二叉链表是二叉树最常用的存储结构。还有其它链接方 法,采用何种方法,主要取决于所要实施的各种运算频度。
例:若经常要在二叉树中寻找某结点的双亲时,可在每个结 点上再加一个指向其双亲的指针域parent,称为三叉链表。
lchild data parent rchild
2021/8/16
2021/8/16
9
6.2 二 叉 树
6.2.1 二叉树的概念
一、二叉树的定义: 二叉树(Binary Tree)是n(n>=0)个结点的有限集,它或者是 空集(n=0)或者由一个根结点和两棵互不相交的,分别称 为根的左子树和右子树的二叉树组成。 可以看出,二叉树的定义和树的定义一样,均为递归定 义。
A
集合3
集合1
BCD
EF
G
集合2
2021/8/16
3
2、树的表示方法 1)树形图法
A
BCD
EF
G
2)嵌套集合法
3)广义表形式 ( A(B, C(E,F), D(G) )
4)凹入表示法
2021/8/16
A B
D
CG
EF
A B C E DF G
4
3、 树结构的基本术语
1)结点的度(Degree):为该结点的子树的个数。 2)树的度:为该树中结点的最大度数。
7)路径(Path):若树中存在一个结点序列k1,k2,…,kj,使得ki是 ki+1的双亲(1<=i<j),则称该结点序列是从ki到kj一条路径 (Path)
路径长度:路径的长度为j-1,其为该路径所经过的边的数 目。
A
BCD
EF
G

数据结构与算法第六章课后答案第六章 树和二叉树

数据结构与算法第六章课后答案第六章  树和二叉树

第6章 树和二叉树(参考答案)6.1(1)根结点a6.2三个结点的树的形态: 三个结点的二叉树的形态:(1) (1) (2) (4) (5)6.3 设树的结点数是n ,则n=n0+n1+n2+……+nm+ (1)设树的分支数为B ,有n=B+1n=1n1+2n2+……+mnm+1 (2)由(1)和(2)有:n0=n2+2n3+……+(m-1)nm+16.4(1) k i-1 (i 为层数)(2) (n-2)/k+1(3) (n-1)*k+i+1(4) (n-1)%k !=0; 其右兄弟的编号 n+16.5(1)顺序存储结构注:#为空结点6.6(1) 前序 ABDGCEFH(2) 中序 DGBAECHF(3) 后序 GDBEHFCA6.7(1) 空二叉树或任何结点均无左子树的非空二叉树(2) 空二叉树或任何结点均无右子树的非空二叉树(3) 空二叉树或只有根结点的二叉树6.8int height(bitree bt)// bt是以二叉链表为存储结构的二叉树,本算法求二叉树bt的高度{ int bl,br; // 局部变量,分别表示二叉树左、右子树的高度if (bt==null) return(0);else { bl=height(bt->lchild);br=height(bt->rchild);return(bl>br? bl+1: br+1); // 左右子树高度的大者加1(根) }}// 算法结束6.9void preorder(cbt[],int n,int i);// cbt是以完全二叉树形式存储的n个结点的二叉树,i是数// 组下标,初始调用时为1。

本算法以非递归形式前序遍历该二叉树{ int i=1,s[],top=0; // s是栈,栈中元素是二叉树结点在cbt中的序号 // top是栈顶指针,栈空时top=0if (n<=0) { printf(“输入错误”);exit(0);}while (i<=n ||top>0){ while(i<=n){visit(cbt[i]); // 访问根结点if (2*i+1<=n) s[++top]=2*i+1; //若右子树非空,其编号进栈i=2*i;// 先序访问左子树}if (top>0) i=s[top--]; // 退栈,先序访问右子树} // END OF while (i<=n ||top>0)}// 算法结束//以下是非完全二叉树顺序存储时的递归遍历算法,“虚结点”用‘*’表示void preorder(bt[],int n,int i);// bt是以完全二叉树形式存储的一维数组,n是数组元素个数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章 树和二叉树
第六章
树和二叉树
熟练掌握二叉树的结构特性 二叉树的结构特性。 1. 熟练掌握二叉树的结构特性。 熟悉二叉树的各种存储结构的特点及适用范围。 存储结构的特点及适用范围 2. 熟悉二叉树的各种存储结构的特点及适用范围。 遍历二叉树是二叉树各种操作的基础 是二叉树各种操作的基础。 3. 遍历二叉树是二叉树各种操作的基础。实现二叉树遍历 的具体算法与所采用的存储结构有关。 的具体算法与所采用的存储结构有关。掌握各种遍历策略的递 归算法,灵活运用遍历算法实现二叉树的其它操作。 归算法,灵活运用遍历算法实现二叉树的其它操作。 理解二叉树线索化 二叉树线索化的实质是建立结点与其在相应序列中 4. 理解二叉树线索化的实质是建立结点与其在相应序列中 的前驱或后继之间的直接联系, 的前驱或后继之间的直接联系,熟练掌握二叉树的线索化过程 以及在中序线索化树上找给定结点的前驱和后继的方法。 以及在中序线索化树上找给定结点的前驱和后继的方法。二叉 树的线索化过程是基于对二叉树进行遍历, 树的线索化过程是基于对二叉树进行遍历,而线索二叉树上的 线索又为相应的遍历提供了方便。 线索又为相应的遍历提供了方便。
性质3: 对于任何一棵二叉树, 度的结点数有n 性质3: 对于任何一棵二叉树,若2度的结点数有n2个, 则叶子数( 必定为n 则叶子数(n0)必定为n2+1 (即n0=n2+1) )
二叉树的定义 二叉树的性质 二叉树的存储结构
15
1. 二叉树的定义
第六章 树和二叉树
定义: 定义:是n(n≥0)个结点的有限集合,由一个根结点以及两棵互 ( )个结点的有限集合, 不相交的、分别称为左子树和右子树 左子树和右子树的二叉树组成 不相交的、分别称为左子树和右子树的二叉树组成 。 逻辑结构: 一对二( : ) 逻辑结构: 一对二(1:2) 基本特征: 基本特征 每个结点最多只有两棵子树(不存在度大于2的结点); ① 每个结点最多只有两棵子树(不存在度大于2的结点); 左子树和右子树次序不能颠倒(有序树)。 ② 左子树和右子树次序不能颠倒(有序树)。 基本形态: 基本形态:
2
第六章 树和二叉树
6.1
树的定义及基本概念
1. 树的定义 由一个或多个(n≥0) 由一个或多个(n≥0)结点组成的有限集合 T=(D,R),有且仅有一个结点称为根 一个结点称为根( T=(D,R),有且仅有一个结点称为根(没有直接前 ),除根结点和终端结点外每个结点有且仅有一 趋),除根结点和终端结点外每个结点有且仅有一 个前趋结点,有多个后继结点。 个前趋结点,有多个后继结点。
本章重点: 本章重点:二叉树的表示和实现
14
第六章 树和二叉树
6.2
二叉树
的树? 为何要重点研究每结点最多只有两个 “叉” 的树? 二叉树的结构最简单,规律性最强; 二叉树的结构最简单,规律性最强; 所有树都能转为唯一对应的二叉树,不失一般性。 所有树都能转为唯一对应的二叉树,不失一般性。
1. 2. 3.
a b d f e g h c
3 4 5 6 7 8 c d e f g h f g h
类型描述: 类型描述:
typedef struct node { datatype data; struct node *next; } Childtype; typedef struct { datatype data; Childtype *chil; 11 }Tree; Tree t[100];
性质2: 深度为k的二叉树至多有2 个结点(k>0)。 性质2: 深度为k的二叉树至多有2k-1个结点(k>0)。
提问:深度为k 提问:深度为k时至少有 k 个结点? 个结点?
17
第六章 树和二叉树
讨论3 二叉树的叶子数和度为2的结点数之间有关系吗? 讨论3:二叉树的叶子数和度为2的结点数之间有关系吗?
8
第六章 树和二叉树
讨论2:树的顺序存储方案应该怎样制定? 讨论 :树的顺序存储方案应该怎样制定? 顺序存储方案应该怎样制定
可规定为:从上至下、从左至右将树的结点依次存入内存。 可规定为:从上至下、从左至右将树的结点依次存入内存。 将树的结点依次存入内存 重大缺陷:复原困难(不能唯一复原就没有实用价值) 重大缺陷:复原困难(不能唯一复原就没有实用价值)。
1)、 1)、用双亲表示法来存储 思路:用一组连续空间来存储树的结点, 连续空间来存储树的结点 思路:用一组连续空间来存储树的结点,同时在每个 结点中附设一个指示器 附设一个指示器, 结点中附设一个指示器,指示其双亲结点在数组中的 data parents 下标。 下标。
0
类型描述: 类型描述: typedef struct { datatype data; int parent;
性质1: 在二叉树的第i层上至多有2 个结点(i>0)。 性质1: 在二叉树的第i层上至多有2i-1个结点(i>0)。
提问:第i层上至少有 提问: 1 个结点? 个结点?
讨论2 深度为k的二叉树,至多有多少个结点? 讨论2:深度为k的二叉树,至多有多少个结点? 2k-1
利用二进制性质可轻松求出) (利用二进制性质可轻松求出)
data
parents
Hale Waihona Puke 1 2结点结构n} Ptree;
树结构
Ptree T[max];
9
第六章 树和二叉树
例1: 双亲表示法
A B D H I E F C G
0 1 2 3 4 5 6 7 8
A B C D E F G H I
-1 0 0 1 1 2 2 3 3
缺点:求结点的孩子时需要遍历整个结构。 缺点:求结点的孩子时需要遍历整个结构。
1
第六章 树和二叉树
5. 熟悉树的各种存储结构及其特点,掌握树和森 熟悉树的各种存储结构及其特点,掌握树和森 方法。 林与二叉树的转换方法 林与二叉树的转换方法。建立存储结构是进行其它操 作的前提, 作的前提,因此读者应掌握 1 至 2 种建立二叉树和树 的存储结构的方法。 的存储结构的方法。 6. 学会编写实现树的各种操作的算法。 学会编写实现树的各种操作的算法。 7. 了解最优二叉树的特性,掌握建立最优二叉树 了解最优二叉树的特性 最优二叉树的特性, 哈夫曼编码的方法 的方法。 和哈夫曼编码的方法。
10
第六章 树和二叉树
2)、 2)、用孩子表示法来存储 思路:将每个结点的孩子排列起来,形成一个带表头 思路:将每个结点的孩子排列起来,形成一个带表头 孩子排列起来 装父结点)的线性表( 个结点要设立n个链表); (装父结点)的线性表(n个结点要设立n个链表); 再将n个表头用数组存放起来 起来, 再将n个表头用数组存放起来,这样就形成一个混合 结构。 结构。 1 a c b e 例如: 例如: d 2 b
问:具有3个结点的二叉树可能有几种不同形态?普通树呢? 具有3个结点的二叉树可能有几种不同形态?普通树呢? 5种/2种 种 种
16
第六章 树和二叉树
2. 二叉树的性质
(3+2)
利用二进制性质可轻松求出) (利用二进制性质可轻松求出)
讨论1 讨论1:第i层的结点数至多是多少? 2i-1个 层的结点数至多是多少?
13
a
c
d f
b e g
c
h
第六章 树和二叉树
5. 树的运算
1. 普通树(即多叉树)若不转化为二叉树,则运 普通树(即多叉树)若不转化为二叉树, 算很难实现。 算很难实现。 2. 二叉树的运算仍然是插入、删除、修改、查找、 二叉树的运算仍然是插入、删除、修改、查找、 排序等,但这些操作必须建立在对树结点能够 排序等,但这些操作必须建立在对树结点能够 遍历”的基础上! “遍历”的基础上! 遍历——指每个结点都被访问且仅访问一次, 指每个结点都被访问且仅访问一次, (遍历 指每个结点都被访问且仅访问一次 不遗漏不重复)。 不遗漏不重复)
注:树的定义具有递归性,即树中还有树。 树的定义具有递归性,即树中还有树。 递归性
3
第六章 树和二叉树
树的表示法有几种: 树的表示法有几种:
• 树形表示法 • 嵌套集合表示法 • 凹入表表示法 • 广义表表示法
这些表示法的示 意图参见教材 意图参见教材
4
第六章 树和二叉树
树形表示法: 树形表示法: 湖南理工学院
firstchild data nextsibling
指向左孩子
指向右兄弟
12
第六章 树和二叉树
T
例如: 例如:
a b d f e g h
类型描述: 类型描述:
typedef struct node { datatype data; struct node *child, *brother; } TreeNode;
6
第六章 树和二叉树
2. 若干术语(续) 若干术语(
——即树的数据元素 结点 即树的数据元素 结点的度——结点挂接的子树数 结点挂接的子树数
有几个直接后继就是几度, (有几个直接后继就是几度, 亦称“次数” 亦称“次数”)
K B E L F
A C G H M D I J
结点的层次 ——从根到该结点的层数(根结点算第一层) 从根到该结点的层数( 从根到该结点的层数 根结点算第一层) 终端结点 ——即度为 的结点,即叶子 即度为0的结点 即度为 的结点, 分支结点 ——即度不为 的结点(也称为内部结点) 即度不为0的结点 即度不为 的结点(也称为内部结点) 树的度 ——所有结点度中的最大值(Max{各结点的度 ) 所有结点度中的最大值( 各结点的度}) 所有结点度中的最大值 各结点的度 树的深度——指所有结点中最大的层数(Max{各结点的层次 ) 指所有结点中最大的层数( 各结点的层次}) 指所有结点中最大的层数 各结点的层次 (或高度 或高度) 或高度 树的度= 树的深度= 上图中的结点数= 问:上图中的结点数=13;树的度= 3 ;树的深度= 4
相关文档
最新文档