博客作业04--树
1.学习总结
1.1树结构思维导图
1.2 树结构学习体会
建树的函数一直写不出来,上机考试的时候都是编程题,都需要建树
2.PTA实验作业
2.1 题目1:6-4 jmu-ds-表达式树
2.2 设计思路(伪代码或流程图)
void InitExpTree(BTree &T,string str) ; //建表达式的二叉树
定义树栈 s1 存储数字,字符型栈 s2 存储运算符
‘#’入栈s2;
while( 字符串不空)
if (str[i] 为数字)
创建树节点,赋予str[i]的值,并置其左右孩子为空后再次入栈s1;
else
调用Precede函数
case ‘<' 运算符入栈s2;
case '=' s2栈顶元素出栈
case '>' 创建新的树节点并赋予s2栈顶元素值,右左孩子分别取s1栈顶元素后再次入s1栈;
while (栈s2中仍有运算符)
创建新的树节点并赋予s2栈顶元素值,右左孩子分别取s1栈顶元素后再次入s1栈;
double EvaluateExTree(BTree T);//计算表达式树
定义浮点型数 a b ;递归把字符转换成数字;a,b分别存储树节点的左右子树;
while (树节点存在)
case '+' 返回 a+b;
case '-' 返回 a-b;
case '*' 返回a*b;
case '/'
if(b不为0) 返回a/b;
2.3 代码截图
2.4 PTA提交列表说明
2.1 题目2:7-8 jmu-ds-二叉树叶子结点带权路径长度和
2.2 设计思路(伪代码或流程图)
void createtree(string str,int i,btree &bt);//创建树
定义链表 str 存储输入的字符,树形指针 *bt
getchar()输入第一个字符,其余字符存储到 str 中;
while (str[i++] 不为'#')
建立新节点bt;
将str[i]的值赋予bt;
递归遍历bt的左子树和右子树;
void count(btree bt,int n);//求叶子节点带权路径长度和
定义整型字符 h 存储叶子节点所在的高度,整型字符 s 存储运算结果
if (bt的左右孩子节点都为空)
bt节点字符数转换为数字a;
s=s+a*高度;
if (bt的左孩子节点不为空或bt的右孩子节点不为空)
递归遍历查找叶子节点;
2.3 代码截图
2.4 PTA提交列表说明
2.1 题目3:6-3 先序输出叶结点
2.2 设计思路(伪代码或流程图)
void PreorderPrintLeaves( BinTree BT );//先序输出叶结点
先序序列根,左,右
如果传下来根节点就是空,直接返回;如果存在子节点,一直访问
if(根存在)访问左子树,若存在继续递归访问左子树
访问右子树 ,若存在继续递归访问右子树
if(左右子树都不存在即为叶节点)输出叶节点
2.3 代码截图
2.4 PTA提交列表说明
3.截图本周题目集的PTA最后排名
3.1 PTA排名
3.2 我的得分:2分
4. 阅读代码