第04次作业-树
Posted AllEln雯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第04次作业-树相关的知识,希望对你有一定的参考价值。
第04次作业-树
1.学习总结
1.1树结构思维导图
1.2 树结构学习体会
2.PTA实验作业
本周要求挑选出3道题目书写设计思路、调试过程。设计思路使用伪代码描述。题目选做要求:
如果选6-1,只需要描述建树的伪代码。
6-4必选
2.1 题目1:6-1
2.2 设计思路(伪代码或流程图)
void CreateBTree(BTree &BT,string str)//根据层次字符序列创建二叉树
{
If(str不为空)
{
Str【i】 为根;
CreateBTree(BT, str【2i+1】);
CreateBTree(BT, str【2i+2】);
}
}
void PreOrder( BTree BT );//先序遍历二叉树
{
If(BT不为空)
{
If(BT不是‘#’)
输出根;
PreOrder(根的左孩子);
PreOrder(根的右孩子);
}
}
void InOrder( BTree BT );//中序遍历二叉树
{
If(BT不为空)
{
InOrder(根的左孩子);
If(BT不是‘#’)
输出根;
InOrder(根的右孩子);
}
}
void PostOrder(BTree BT);//后序遍历二叉树
{
If(BT不为空)
{
PostOrder(根的左孩子);
PostOrder(根的右孩子);
}
}
2.1 题目2:6-4
2.2 设计思路(伪代码或流程图)
void InitExpTree(BTree &T,string str) //建表达式的二叉树
{
建 运算符op1栈op.Push(‘#’);
建 操作符op2 栈ch.Push(‘#’);
初始化二叉树根节点;
While(表达式未结束)
{
If(中缀表达式ch==运算符)
{
与op2栈栈顶比较优先级
If(栈顶>=ch)
{
初始化一个根节点, pop(op1),pop(op1)不为‘#’,将ch作为根节点,两个数为为左右子树,再push(op1);
若第二次pop(op1)为‘#’不出栈,并将表达式接着往下移;
}
Else
进入op2栈;
}
If(中缀表达式ch==操作符)
{
Push(op2);
}
表达式向下移一位;
}
double EvaluateExTree(BTree T) //计算表达式树
{
Op=根;
定义a=根的左子树;
定义b=根的右子树;
If(a,b都为操作符)
则计算c=a op b的值;
返回值c;
}
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明。
不会改。
2.1 题目3:7-2
2.2 设计思路(伪代码或流程图)
设计一个建造二叉树的函数和一个先序遍历函数
BTNode CreateBT2(int post,int in ,int n)//构造二叉树
{
//post存放后序序列,in存放中序序列
If(n<=0)
Return 0;
Else
{
定义r=根;
找到中序序列中根所在下标为k;
根的左孩子=CreateBT2(post, in , k);
根的右孩子=CreateBT2(post+k, p+1 , n-k-1)
}
}
void PreOrder(BTNode b)//先序遍历二叉树
{
If(树不为空)
{
输出根;
先序遍历根的左孩子,先序遍历右孩子;
}
}
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明。
代码运行时只可以打出n和第一串数字;
原因是在源代码中将数字串全都定义成字符型,后来将其改为整型数值;
且原代码中main中输入时忘记输入整数n;
3.截图本周题目集的PTA最后排名
本次题目集总分:285分
必做题共:230分
总分=155
3.1 PTA排名截图
3.2 我的总分:155
4. 阅读代码(必做)
本次为必做
找1篇和树结构有关的代码,说明该代码功能是什么,优点是什么?
给出代码相关地址。
5.代码Git提交记录截图
以上是关于第04次作业-树的主要内容,如果未能解决你的问题,请参考以下文章