西华师范大学:《算法与程序设计》课程教学资源_第五章 树和二叉树

第5章树和二叉树 本章中主要介绍下列内容: 树的逻辑定义和存储结构 叉树的逻辑定义、存储结构 二叉树的基本操作算法 树和二叉树的转换 哈夫曼树及其应用 西师滋大学数学与信息学院 限出
ぜ5【 ᵀλࣸᵀ ᴀゴЁЏ㽕ҟ㒡ϟ߫ݙᆍ˖ l ᷥⱘ䘏䕥ᅮНᄬټ㒧ᵘ l Ѡঝᷥⱘ䘏䕥ᅮНǃᄬټ㒧ᵘ l Ѡঝᷥⱘᴀ᪡ㅫ⊩ l ᷥѠঝᷥⱘ䕀ᤶ l જ᳐ᷥঞ݊ᑨ⫼ ߎ䗔

1树 5,2二叉树 53哈夫曼树及其应用 西师滋大学数学与信息学院
5.1 ᷥ 5.2 Ѡঝᷥ 5.3 જ᳐ᷥঞ݊ᑨ⫼

1树 5.1.1树的定义和基本运算 1.定义 树是一种常用的非线性结构。我们可以这样定 义:树是n(n≥0)个结点的有限集合。若n=0,则称 为空树;否则,有且仅有一个特定的结点被称为根, 当n>1时,其余结点被分成m(m>0)个互不相交的子 集T1,T2,…,Tm,每个子集又是一棵树。由此可以 看出,树的定义是递归。 西师滋大学数学与信息学院 网图
5.1 ᷥ 5.1.1 ᷥⱘᅮНᴀ䖤ㅫ 1. ᅮН ᷥᰃϔ⾡ᐌ⫼ⱘ䴲㒓ᗻ㒧ᵘDŽ៥Ӏৃҹ䖭ḋᅮ Н˖ᷥᰃn˄nı0˅Ͼ㒧⚍ⱘ᳝䰤䲚ড়DŽ㢹n=0ˈ߭⿄ Ўぎᷥ˗৺߭ˈ᳝Ϩҙ᳝ϔϾ⡍ᅮⱘ㒧⚍㹿⿄Ўḍˈ ᔧn>1ᯊˈ݊ԭ㒧⚍㹿ߚ៤m˄m>0˅ϾѦϡⳌѸⱘᄤ 䲚T1ˈT2ˈ...ˈTmˈ↣Ͼᄤ䲚জᰃϔỉᷥDŽ⬅ℸৃҹ ⳟߎᷥˈⱘᅮНᰃ䗦ᔦDŽ

6|③Q (b) 图5- 西师滋大学数学与信息学院
5-1 K L M E F G H I J B C D A A Æ (a) (b) (c)

结点数据元素的内容及其指向其子树根的分支统 称为结点。 结点的度结点的分支数。 终端结点(叶子)度为0的结点。 非终端结点度不为0的结点。 结点的层次树中根结点的层次为1,根结点子树 的根为第2层,以此类推。 树的度树中所有结点度的最大值。 树的深度树中所有结点层次的最大值。 有序树、无序树如果树中每棵子树从左向右的排 列拥有一定的顺序,不得互换,则称为有序树,否则 称为无序树。 西师滋大学数学与信息学院
㒧⚍ ᭄ܗ㋴ⱘݙᆍঞ݊ᣛ݊ᄤᷥḍⱘߚᬃ㒳 ⿄Ў㒧⚍DŽ 㒧⚍ⱘᑺ 㒧⚍ⱘߚᬃ᭄DŽ 㒜ッ㒧⚍˄ᄤ˅ ᑺЎ0ⱘ㒧⚍DŽ 䴲㒜ッ㒧⚍ ᑺϡЎ0ⱘ㒧⚍DŽ 㒧⚍ⱘሖ ᷥЁḍ㒧⚍ⱘሖЎ1ˈḍ㒧⚍ᄤᷥ ⱘḍЎ2ሖˈҹℸ㉏DŽ ᷥⱘᑺ ᷥЁ᠔᳝㒧⚍ᑺⱘ᳔ؐDŽ ᷥⱘ⏅ᑺ ᷥЁ᠔᳝㒧⚍ሖⱘ᳔ؐDŽ ᳝ᑣᷥǃ᮴ᑣᷥ བᵰᷥЁ↣ỉᄤᷥҢᎺেⱘᥦ ߫ᢹ᳝ϔᅮⱘ乎ᑣˈϡᕫѦᤶˈ߭⿄Ў᳝ᑣᷥˈ৺߭ ⿄Ў᮴ᑣᷥDŽ

森林是m(m≥0)棵互不相交的树的集合。 在树结构中,结点之间的关系又可以用家族关系 描述,定义如下: 孩子、双亲结点子树的根称为这个结点的孩 子,而这个结点又被称为孩子的双亲。 子孙以某结点为根的子树中的所有结点都被称 为是该结点的子孙。 祖先从根结点到该结点路径上的所有结点 兄弟同一个双亲的孩子之间互为兄弟。 堂兄弟双亲在同一层的结点互为堂兄弟。 西师滋大学数学与信息学院
Ểᵫ ᰃm˄mı0˅ỉѦϡⳌѸⱘᷥⱘ䲚ড়DŽ ᷥ㒧ᵘЁˈ㒧⚍П䯈ⱘ݇㋏জৃҹ⫼ᆊᮣ݇㋏ ᦣ䗄ˈᅮНབϟ˖ ᄽᄤǃঠ҆ 㒧⚍ᄤᷥⱘḍ⿄Ў䖭Ͼ㒧⚍ⱘᄽ ᄤˈ㗠䖭Ͼ㒧⚍জ㹿⿄Ўᄽᄤⱘঠ҆DŽ ᄤᄭ ҹᶤ㒧⚍ЎḍⱘᄤᷥЁⱘ᠔᳝㒧⚍䛑㹿⿄ Ўᰃ䆹㒧⚍ⱘᄤᄭDŽ ⼪ܜ Ңḍ㒧⚍ࠄ䆹㒧⚍䏃ᕘϞⱘ᠔᳝㒧⚍DŽ ܘᓳ ৠϔϾঠ҆ⱘᄽᄤП䯈ѦЎܘᓳDŽ ූܘᓳ ঠ҆ৠϔሖⱘ㒧⚍ѦЎූܘᓳDŽ

2.树的基本运算 常用操作: 1)构造一个树 Createtree(T 2)清空以T为根的树 Cleartree( (3)判断树是否为空 Treeempty(T (4)获取给定结点的第i个孩子 Childe(T, node i) (5)获取给定结点的双亲 Parent(T,node) (6)遍历树 Traverse(T) 对树遍历的主要目的是将非线性结构通过遍历过程 线性化,即获得一个线性序列。树的遍历顺序有两 种,一种是先序遍历,即先访问根结点,然后再依次 用同样的方法访问每棵子树;另一种是后序遍历,即 先依 西师滋大学数学与信息学院
2. ᷥⱘᴀ䖤ㅫ ᐌ⫼᪡˖ ˄1˅ ᵘ䗴ϔϾᷥ CreateTree (T) ˄2˅⏙ぎҹTЎḍⱘᷥ ClearTree(T) ˄3˅߸ᮁᷥᰃ৺Ўぎ TreeEmpty(T) ˄4˅㦋প㒭ᅮ㒧⚍ⱘiϾᄽᄤ Child(T,node,i) ˄5˅㦋প㒭ᅮ㒧⚍ⱘঠ҆ Parent(T,node) ˄6˅䘡ग़ᷥTraverse(T) ᇍᷥ䘡ग़ⱘЏ㽕Ⳃⱘᰃᇚ䴲㒓ᗻ㒧ᵘ䗮䖛䘡ग़䖛 㒓ᗻ࣪ेˈ㦋ᕫϔϾ㒓ᗻᑣ߫DŽᷥⱘ䘡ग़乎ᑣ᳝ϸ ⾡ˈϔ⾡ᰃܜᑣ䘡ग़ˈेܜ䆓䯂ḍ㒧⚍ˈ✊ৢݡձ ⫼ৠḋⱘᮍ⊩䆓䯂↣ỉᄤᷥ˗ϔ⾡ᰃৢᑣ䘡ग़ˈे ձܜ

5.1.2树的存储结构 1.双亲表示法 树的双亲表示法主要描述的是结点的双亲关系。 西师滋大学数学与信息学院
5.1.2 ᷥⱘᄬټ㒧ᵘ 1. ঠ҆㸼⼎⊩ ᷥⱘঠ҆㸼⼎⊩Џ㽕ᦣ䗄ⱘᰃ㒧⚍ⱘঠ҆݇㋏DŽ

下标 info paren 012345678 ABCDEFGH 000 G)④ 3666 图5-3 西师滋大学数学与信息学院
5-3 ϟᷛ info paren t 0 A -1 1B 0 2C 0 3D 0 4E 1 5F 1 6G 3 7H 6 8I 6 9J 6 H I J E F G B C D A A B C D E F G HIJ

类型定义 #define maX Tree node size 100 typedef struct i TEntry Type info; int parent; 3 ParentNode typedef struct ParentNode itemMAX TREE NODE SIZE ntn;/树中当前的结点数目 3 Parenttree; 西师滋大学数学与信息学院
㉏ൟᅮН˖ #define MAX_TREE_NODE_SIZE 100 typedef struct { TEntryType info; int parent; } ParentNode; typedef struct { ParentNode item[MAX_TREE_NODE_SIZE]; int n; //ᷥЁᔧࠡⱘ㒧⚍᭄Ⳃ }ParentTree;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 西华师范大学:《算法与程序设计》课程教学资源_第三章 栈和队列.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第二章 线性表.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第一章 数据结构基础概论.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第十一章 外排序.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第十章 算法设计.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第十二章 非递归化.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第四章 串和数组.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第八单元 指针与函数.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第九单元 文件.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第七单元 指针的概念.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第六单元 结构体和共用体类型.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第五单元 编译预处理.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第四单元 表达式与函数.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第三单元 数据类型.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第二单元 控制结构.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第一单元 Hello, C!.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_教学大纲.doc
- 西华师范大学:《算法与程序设计》课程教学资源_数学实验.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_习题一.doc
- 西华师范大学:《算法与程序设计》课程教学资源_实验内容与上机指导.ppt
- 西华师范大学:《算法与程序设计》课程教学资源_第六章 图.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第三章 非线性方程的数值解法.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第二章 解线性代数方程组的直接方法.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第五章 求矩阵特征根和特征向量的数值方法.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第四章 解线性代数方程组的迭代法.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第六章 代数插值.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第七章 样条函数.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第八章 数值积分.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第九章 常微分初值问题的数值解.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第九章 复杂度及其分析.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第七章 查找.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第八章 排序.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第九章 文件.pdf
- 西华师范大学:《算法与程序设计》课程教学资源_第一章 基本知识.pdf
- 《Java语言程序设计》课程教学资源(PPT课件讲稿)第二章 Java语言基础.ppt
- 《Java语言程序设计》课程教学资源(PPT课件讲稿)第六章 图形界面设计.ppt
- 《Java语言程序设计》课程教学资源(PPT课件讲稿)第七章 多线程机制.ppt
- 《Java语言程序设计》课程教学资源(PPT课件讲稿)金额的中文大小写方式.ppt
- 《Java语言程序设计》课程教学资源(PPT课件讲稿)第五章 异常处理.ppt
- 《Java语言程序设计》课程教学资源(PPT课件讲稿)第四章 类和对象的高级特征.ppt