zoukankan      html  css  js  c++  java
  • 第04次作业-树

    一.学习总结

    1.1树结构思维导图

    1.2树结构学习体会

      我对树的认识:与前面几章的线性表不同,树是一种非线性结构。

      困难:主要在于不懂如何将自己的思路写成代码,道理感觉都懂,但还是不会打代码.....

      树结构可以解决的问题:表达式求解、解决亲戚关系问题等等

    二.PTA实验作业

     题目一:6-1 jmu-ds-二叉树操作集

    1.题目要求

    2.设计思路

    void CreateBTree(BTree &BT,string str){
        初始化一个队列 Q;      //用于存放已建立左或右子树关系的节点
        定义i;               //控制字符数组
        定义BTree类型的T;
        读入str[0];
        if(str[0] is not '')
            给BT分配存储空间并将str[0]赋给T->data,且置空其左右孩子;
            将节点T进队;
        else
            BT=NULL;
        while(Q is not empty){
            访问队首将其赋给T并出队;
          i++;
          if(str[i] is '#') 
              T->lchild=NULL;
          else{
              给T分配存储空间并将str[i]赋给T->data,且置空其左右孩子;
              将节点T的左孩子进队;
          }    
          i++;
          T的右孩子同左孩子;
        }
    }

    3.代码截图

    4.PTA提交列表

    题目二:6-4 jmu-ds-表达式树

     1.题目要求

    2.设计思路

    创建二叉表达式树
    定义树栈 s1; //用于存储运算数
    定义字符型栈 s2;//用于存储运算符
    定义整型变量i;//控制字符数组
    将‘#’入栈s2;
    while 字符串不空
        if str[i] 为数字
          then 创建新节点T,将str[i]的值赋给T->data,并置空其左右孩子
        将节点T再次入栈s1;
    else 调用Precede函数比较栈顶运算符和当前运算符的优先级 if ‘<’ then 运算符入栈s2; if'=' then s2栈顶元素出栈 if'>' then 创建新节点T并将s2栈顶元素值赋给T->data,右左孩子分别取s1栈顶元素后再次入栈s1; end while 栈s2不空 创建新节点T并赋予其s2栈顶元素值,右左孩子分别取s1栈顶元素后再次入s1栈; end

    3.代码截图

    4.PTA提交记录说明

     

    粘贴的时候不小心贴了全部代码...

    题目三:7-8 jmu-ds-二叉树叶子结点带权路径长度和

    1.题目要求

    2.设计思路

    trans函数将顺序存储转为链式存储
    int displeaf(btree bt,int h){
        定义静态局部变量s保存带权路径的长度
        if(bt!=NULL){
          if(bt->lchild!=NULL){
              displeaf(bt->lchild,h+1);    
          }
          if(bt->rchild!=NULL){
              displeaf(bt->rchild,h+1);    
          }
          if(叶子节点){
              s+=权值乘高度(高度由递归次数决定)
          }
    }        

    3.代码截图

     

    4.PTA提交记录说明

     一开始我将节点的数据元素定义为整型,忽略了“#”,导致答案错误,后来改为char,在计算s时用减去‘0’来将数字字符转为数字就对了。

    三.PTA排名

    1.PTA排名截图:

    2.我的总分:2分

    四.阅读代码

    代码功能:求二叉树宽度

    代码优点:思路清晰明了且算法简单

    代码截图:

    代码地址:https://blog.csdn.net/K346K346/article/details/51076268

    五.GIT提交记录

     

  • 相关阅读:
    行列转换等经典SQL语句
    [jQuery]使用jQuery.Validate进行客户端验证(中级篇上)——不使用微软验证控件的理由
    深入分析jQuery.prototype.init选择器源码
    浅析jQuery基础框架
    GCC入门 ——-转载
    [转载]在VC中使用 Flash 美化你的程序
    用VS调试 javascript
    如何提高程序性能
    线程安全的懒单例模版类
    各种计算机语言的经典书籍 (转载)
  • 原文地址:https://www.cnblogs.com/chenyutin/p/8994139.html
Copyright © 2011-2022 走看看