第04次作业-树
1.学习总结
1.1树结构思维导图
1.2 树结构学习体会
1.树是非线性的数据结构,常用的树形结构有树和二叉树,建树、遍历时运用递归能方便的解决问题。
2.困难:二叉树的前序和中序还原二叉树与后序和中序还原二叉树让我比较头疼,看了很久的概念才理解一点。
3.解决的问题:带#的建树,二叉树的高度,二叉树的层次遍历,二叉树叶子节点带权路径和,还原二叉树等等。
2.PTA实验作业
2.1 题目1:
6-1 jmu-ds-二叉树操作集
2.1.1 设计思路(伪代码或流程图)
建树T 定义队列Q if 字符数组不为\0 申请存储空间,并传入数据 左右孩子节点都为空 进队 else 数为空 while队列不为空 取队首元素 并出队 if 字符为# 左孩子节点为空 else 为左孩子申请存储空间并传入数据 左孩子的左右孩子节点都为空 左孩子入队 右孩子同理
2.3 代码截图
2.4 PTA提交列表说明
2.1 题目2:题目名称
7-8 jmu-ds-二叉树叶子结点带权路径长度和
2.2 设计思路(伪代码或流程图)
BTree tree(string s,int i) { if(i大于串的长度或者等于#)返回空 新建树b 申请内存空间 带入数据 用递归的方法建立左子树和右子数 } wpl(树b,高度h) {定义静态局部变量s存放权的和 if b不为空 if b左子树不为空, 递归左子树高度+1 if b右子树不为空同理 if b左右子树都为空 和=高度*b的数值 else 返回空 返回s }
2.3 代码截图
2.4 PTA提交列表说明
部分正确是因为,一开始if(i>size())return NULL没有考虑到字符串开头为# 按照pta里给的数据是对的 但是其他的树型就不正确了,后面思考改为if(i>size()-1) return NULL
2.1 题目3:6-4 jmu-ds-表达式树
2.2 设计思路(伪代码或流程图)
void InitExpTree(BTree &T,string str) { 建立树型栈s存放数字 建立字符型栈op存放符号 进栈# while 字符串不为空 if 字符不是运算符号 为二叉树T申请空间,并且赋值 令其左右孩子都为空 进栈二叉树 else 判断字符栈顶部的字符与字符的的大小关系 case 小于:进栈 等于 访问栈顶 大于 建立新节点 并将字符栈顶元素赋给T->data 左右孩子分别取数字栈元素后再出栈 }
2.3 代码截图
2.4 PTA提交列表说明
3.截图本周题目集的PTA最后排名
3.1 PTA排名截图
3.2 我的总分:205
2分
4. 阅读代码(必做)
代码地址:https://blog.csdn.net/kellen_f/article/details/75581739
代码功能:使用队列,层次遍历二叉树求二叉树的宽度
优点:代码说明简洁明确
5. 代码Git提交记录截图