1.学习总结
1.1树结构思维导图
1.2 树结构学习体会
1.2.1对于树的认识:
树是数据结构中比较重要也是比较难理解的一类存储结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。
对于树的定义有这么一个递归定义:
①单个结点是一棵树,树根就是该结点本身。
②如果一个结点P的所有子节点都是子树的根,那P也是一个根。
③空集也是树,称为空树。空树中没有结点。
对于第二句话一直不是很能理解。
1.2.2学习中遇到的困难:
①最简单的树都不懂的如何在代码上建立出来。
②都说树的学习过程中对于递归思想的体会很重要,但是我还是迟迟不能理解递归这个思想的真正含义,只明白递归要有自身的调用及返回值。
③还有前面栈、队列这些线性表知识的欠缺。
1.2.3树的结构可以解决的问题
树在文件系统、编译器、索引以及查找算法中有很广的应用
2.PTA实验作业
2.1 题目1:6-1 jmu-ds-二叉树操作集
本题要求用层次法创建二叉树,层次法输入序列是按树的从上到下从左到右的顺序形成,各层的空节点用字符 #
表示,如:
这颗树对应的层次字符串序列为ABD#C#E##F###
,即结点的空孩子用#
表示。
2.2 设计思路(伪代码或流程图)
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明。
2.1题目2:6-4 jmu-ds-表达式树
- 输入一行中缀表达式,转换一颗二叉表达式树,并求解.
- 表达式只包含
+
,-
,*
,/
,(
,)
运算符,操作数只有一位,且为整数(有兴趣同学可以考虑负数小数,两位数做法)。按照先括号,再乘除,后加减的规则构造二叉树。 - 如图所示是"1+(2+3)*2-4/5"代数表达式对应二叉树,用对应的二叉树计算表达式的值。 转换二叉树如下:
2.2 设计思路(伪代码或流程图)
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明。
一个。cpp:在函数“双重评估树(BTree)”中:
一个。cpp:153:9:警告:未使用变量sum [- wunusd -variable]
2.1题目3:6-3 先序输出叶结点
本题要求按照先序遍历的顺序输出给定二叉树的叶结点。
函数接口定义:
void PreorderPrintLeaves( BinTree BT );
其中BinTree
结构定义如下:
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
函数PreorderPrintLeaves
应按照先序遍历的顺序输出给定二叉树BT
的叶结点,格式为一个空格跟着一个字符。
2.2 设计思路(伪代码或流程图)
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明。
&&最初的时候写成||导致部分正确。
3.截图本周题目集的PTA最后排名
3.1 PTA排名截图
算是很后面了emmm
3.2 我的总分:
PTA总分105分(1分)
4. 阅读代码(必做)
http://data.biancheng.net/view/33.html
对哈夫曼树有一个很好的讲解,从介绍开始到讲解最后再到代码实现,
一步步,对于新手来说很不错!