博客作业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. 阅读代码

posted @ 2018-05-05 19:36  折原临也  阅读(223)  评论(0编辑  收藏  举报