1.学习总结(2分)
1.1树结构思维导图
1.2 树结构学习体会
树是一种重要的非线性结构,树的调用还跟递归有关
困难就是伪代码与代码之间的转换,还有递归调用和非递归算法都不是很清晰,写代码困难
可以解决的问题有求树的高度,与森林之间的转换,线索化二叉树,哈夫曼树的WPL和编码
2.PTA实验作业(4分
2.1 题目1:6-2 求二叉树高度
2.2 设计思路
定义lchild,rchild
if 树的高度为0
end
else
求左子树的高度
求右子树的高度
递归返回树的高度
end
2.3 代码截图
2.4 PTA提交列表说明
2.1 题目2:6-4 jmu-ds-表达式树
2.2 设计思路
void InitExpTree(BTree &T,string str) //建表达式的二叉树
建立栈s1存放数字
建立栈s2存放操作符
将\'#\'入栈
while 字符串不空
if str[i]不是运算符
创建新节点 ,将该节点的左右孩子初始化为空,并将该节点入栈
else
判断操作符优先级
若优先级小,入栈数s2,优先级一样,s2栈顶元素出栈
优先级大,创建新节点并赋值,左右孩子分别取是s1栈顶元素后再入栈s1
while 符号栈不为\'#\'
创建新节点并赋值,左右孩子分别取是s1栈顶元素后再入栈s1
double EvaluateExTree(BTree T)//计算表达式树
定义浮点数a,b分别存放左右子树
递归将字符转为数字
while 树节点存在
switch(T->data)
case + 返回a+b
case - 返回a-b
case * 返回a*b
case / 如果b为0,输出 divide 0 error! 否则 返回a/b
end
2.3 代码截图
2.4 PTA提交列表说明
2.1 题目1:7-1 还原二叉树
2.2 设计思路
定义结构体
ElemType data;
Bintree lchild;
Bintree rchild;
Bintree Recover(ElemType Pre[],ElemType In[],int len)
Bintree T
if !len
返回 NULL;
else
for i=0 i<len
if 在中序遍历序列中找根节点
递归构建左右子树
返回 T
int GetHigh(Bintree T)
定义HL为左子树高度,HR为右子树高度,Height为树高度
if 树空
返回 0
else
求左子树高度HL
求右子树高度HR
树高为左右树高较大者加1
返回 Height;
main()
定义树 Tree
定义先序遍历数组Preorder[MAX+1]和中序遍历数组Inorder[MAX+1]
输入结点总数N,先序遍历序列和中序遍历序列
递归调用处理先序遍历序列和中序遍历序列
再调用求高度函数GetHigh(Tree)
输出高度H
2.3 代码截图
2.4 PTA提交列表说明
3.截图本周题目集的PTA最后排名
3.1 PTA排名
3.2 我的得分:150