数据结构实践项目——树和二叉树(2)

本文针对数据结构基础系列(6):树和二叉树第7, 11-15课时

7 二叉树与树、森林之间的转换

11 二叉树遍历非递归算法

12 层次遍历算法

13 二叉树的构造

14 线索二叉树

15 哈夫曼树

【项目1 - 二叉树算法验证】

  运行并重复测试教学内容中涉及的算法。改变测试数据进行重复测试的意义在于,可以从更多角度体会算法,以达到逐渐掌握算法的程度。使用你的测试数据,并展示测试结果,观察运行结果,以此来领会算法。

(1)层次遍历算法的验证 [参考链接]

(2)二叉树构造算法的验证 [参考链接]

(3)中序线索化二叉树的算法验证 [参考链接]

(4)哈夫曼编码的算法验证 [参考链接]

【项目2 - 用二叉树求解代数表达式】

  用二叉树来表示代数表达式,树的每一个分支节点代表一个运算符,每一个叶子节点代表一个运算数(为简化,只支持二目运算的+、-、*、/,不加括号,运算数也只是一位的数字字符。本项目只考虑输入合乎以上规则的情况)。请设计算法,(1)根据形如“1+2?3?4/5”的字符串代表的表达式,构造出对应的二叉树(如图),用后序遍历的思路计算表达式的值时,能体现出先乘除后加减的规则;(2)对构造出的二叉树,计算出表达式的值。

  

  请利用二叉树算法库

[参考解答]

纸上谈兵:“知原理”检验题目

0607 设有森林F={T1, T2, T3},如下图所示,请画出所对应的二叉树,再试着还原为森林。

0613 二叉树的构造:已知一棵二叉树的中序序列为cbedahgijf,后序序列为cedbhjigfa,请给出该二叉树的树形表示。

0614 线索二叉树:画出下面二叉树的后序线索化树。

0615 哈夫曼树:下表给出的,是某文本档案中的词汇出现的频度。假设文本档案中只有这些词,请给出各个单词的哈夫曼编码,求出平均查找长度。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-17 13:48:56

数据结构实践项目——树和二叉树(2)的相关文章

数据结构实践项目——树和二叉树(1)

本文针对[数据结构基础系列(6):树和二叉树]第1-10课时 1 树结构导学 2 树的基本概念 3 树的基本术语 4 树的性质 5 树的存储结构 6 二叉树概念和性质 7 二叉树与树.森林之间的转换 8 二叉树的存储结构 9 二叉树的基本运算及其实现 10 二叉树的遍历 [项目1 - 二叉树算法库] 定义二叉树的链式存储结构,实现其基本运算,并完成测试. 要求: 1.头文件btree.h中定义数据结构并声明用于完成基本运算的函数.对应基本运算的函数包括: void CreateBTNode(BT

数据结构实践项目——外部排序

本文是针对[数据结构基础系列(10):外部排序]中的实践项目. [项目-1]置换-选择算法模拟 编敲代码,模拟置换-选择算法生成初始归并段的过程. 设大文件里的记录共同拥有18个: 15 4 97 64 17 32 108 44 76 9 39 82 56 31 80 73 255 68 内存工作区能够容纳5个记录.输出产生的归并段文件. 在模拟中.输入文件数据和输出的归并段数据均直接置在内存中就可以. [參考解答] [项目2]败者树归并模拟 编敲代码,模拟改者树实现5路归并算法的过程. 设有5

数据结构和算法 (二)数据结构基础之树、二叉树

Java面试宝典之二叉树的实现 我们接着上一篇数据结构继续讲解.本章系数据结构之树与二叉树,从这章开始,我们就要介绍非线性结构了,这些内容理解起来比线性表稍难一些,我尽量写的通俗一些,如果读的过程中有任何问题,请按上述方式联系我! 一.树 树 形结构是一类重要的非线性结构.树形结构是结点之间有分支,并具有层次关系的结构.它非常类似于自然界中的树.树结构在客观世界中是大量存在的,例如家 谱.行政组织机构都可用树形象地表示.树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结

基本数据结构学习笔记——树与二叉树

1.树的形式化定义: 树(Tree)是由一个或多个结点组成的有限集合T,其中有一个特定的称为根的结点:其余结点可分为m(m≥0)个互不相交的有限集T1,T2,T3 ,…,Tm,每一个集合本身又是一棵树,且称为根的子树. 2.有关树的基本术语: 1.结点(Node):树中的元素,包含数据项及若干指向其子树的分支. 2.结点的度(Degree):结点拥有的子树数. 3.结点的层次:从根结点开始算起,根为第一层. 4.叶子(Leaf):度为零的结点,也称端结点. 5.孩子(Child):结点子树的根称

数据结构实践项目——最短路径和拓扑序列

本文是针对[数据结构基础系列(7):图]的第2组实践例程. (程序中graph.h是图存储结构的"算法库"中的头文件,详情请单击链接-) 0710 生成树的概念 0711 最小生成树的普里姆算法 0712 最小生成树的克鲁斯卡尔算法 0713 从一个顶点到其余各顶点的最短路径 0714 每对顶点之间的最短路径 0715 拓扑排序 0716 AOE网与关键路径 纸上谈兵:"知原理"检验题目 1.针对下面的图1: (图1) (1)写出图的邻接矩阵: (2)按照Prim算

数据结构实践项目——顺序表

[项目1 - 顺序表的基本运算] 领会"0207将算法变程序"部分建议的方法,将顺序表部分的算法变成程序. 实现顺序表基本运算有算法(对应视频0204创建线性表的实现和0205顺序表基本运算的实现),依据"最小化"的原则进行测试.所谓最小化原则,指的是利用尽可能少的基本运算,组成一个程序,并设计main函数完成测试. 作为第一个这种类型的实践(后续每一部分均有这种实践,这是我们学习的基础,也是实践成果积累的基础),结合相关的算法,给出建议的过程: (1)目的是要测试

数据结构实践项目——数组和广义表

本文针对 [数据结构基础系列网络课程(5):数组和广义表] 1. 数组的基本概念与存储结构 2. 特殊矩阵的压缩存储 3. 稀疏矩阵的三元组表示 4. 稀疏矩阵的十字链表表示 5. 广义表 6. 广义表的存储结构及基本运算的实现 [项目1 - 猴子选大王(数组版)] 一群猴子,编号是1,2,3 -m,这群猴子(m个)按照1-m的顺序围坐一圈.从第1只开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,最后一只出圈的猴子为大王.输入m和n,输出猴子离开圈子的顺序,从中也可以看出最后为大王是几号

数据结构实践项目——串

本文针对数据结构基础系列网络课程(4):串. 1. 串的基本概念及导学 2. 串的顺序存储及其基本操作实现 3. 串的顺序存储应用 4. 串的链式存储及其基本操作实现 5. 串的模式匹配(Brute-Force算法) 6. 串的模式匹配(KMP算法) [项目1 - 建立顺序串的算法库] 定义顺序串的存储结构,实现其基本运算,并完成测试. 要求: 1.头文件sqString.h中定义数据结构并声明用于完成基本运算的函数.对应基本运算的函数包括: void StrAssign(SqString &s

数据结构实践项目——队列

本组项目针对<数据结构基础系列(3):线性表>中的7-12课: 7.队列的定义 8. 顺序队的存储及基本操作 9. 环形队列的存储及基本操作 10. 队列的链式存储结构及其基本运算的实现 11. 队列的应用-迷宫问题 12. 双端队列 [项目1 - 建立顺序环形队列算法库] 定义顺序环形队列存储结构,实现其基本运算,并完成测试. 要求: 1.头文件sqqueue.h中定义数据结构并声明用于完成基本运算的函数.对应基本运算的函数包括: void InitQueue(SqQueue *&q