码迷,mamicode.com
首页 > 其他好文 > 详细

博客作业04--树

时间:2018-05-05 20:45:41      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:运算   pre   一个   ptree   后序   分享   计算   bin   实验   

1.学习总结

1.1树结构思维导图

技术分享图片

1.2 树结构学习体会

  • 感觉树的内容很难,一些逻辑比较难弄懂,而且内容比较多,所以还是得花时间去理解,树不比先前的那些线性结构,多了很多新东西,比如带权路径长度,哈弗曼编码什么的,总之要学起来真的不容易。

2.PTA实验作业

1.题目1:6-2 求二叉树高度

1.1设计思路(伪代码或流程图)

int GetHeight( BinTree BT )
{
      定义LD,RD分别表示左子树高度和右子树高度
      如果BT==NULL    返回0
      否则递归调用该节点的左节点和右节点(后序遍历)
      最后返回max{LD,RD}+1
}

1.2代码截图

技术分享图片

1.3PTA提交列表说明

技术分享图片

  • 此题在编译器上出现的错误:LD和RD的最大值没有加一再返回,导致答案错误;

2.题目1:6-4 jmu-ds-表达式树

2.1设计思路(伪代码或流程图)

void InitExpTree(BTree &T,string str)
{
     建立op栈存运算符
     op.push(‘#‘)
     初始化根节点栈stacktree栈
     while(str[i])
     {
          如果str[i]是操作数 
                 生成一个只有根节点的子树T,stacktree.push(T)
          如果str[i]是运算符{
                 switch(栈顶元素与str[i]的优先级)
                      大于:创建一个树节点T,数据为op.top
                                 stacktree弹出两个节点T1,T2
                                 T->lchild=T1,T->rlchild=T2
                                 stacktree.push(T)
                      小于:op.push(str[i])
                      等于:op.pop()   
            }
       }
       while(op.top()!=‘#‘){
            创建一个树节点T,数据为op.top
            stacktree弹出两个节点T1,T2
             T->lchild=T1,T->rlchild=T2
             stacktree.push(T)
              op.pop()
        }
        T=stacktree.top()
}
double EvaluateExTree(BTree T)
{
     定义变量a,b
     递归出口:(!T->lchild&&!T->rchild)
           返回T->data-‘0‘
     递归调用左右节点
     a=EvaluateExTree(T->lchild)
     b=EvaluateExTree(T->rchild)
     判断操作符
     进行相应计算

2.2代码截图

技术分享图片
技术分享图片
技术分享图片

2.3PTA提交列表说明

技术分享图片
技术分享图片

3.题目1:

3.1设计思路(伪代码或流程图)

3.2代码截图

3.3PTA提交列表说明

3.截图本周题目集的PTA最后排名

3.1 PTA排名

3.2 我的得分:

4. 阅读代码

5. 代码Git提交记录截图

博客作业04--树

标签:运算   pre   一个   ptree   后序   分享   计算   bin   实验   

原文地址:https://www.cnblogs.com/mayifang/p/8995770.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!