第04次作业-树

1.学习总结

1.1树结构思维导图

 

1.2 树结构学习体会

1.是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合,它具有以下的特点:每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树.

2.困难:对树的算法的代码化比较吃力。

3.可解决的问题:求解哈尔曼编码以及并查集解决等价问题等。

2.PTA实验作业

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

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

创建树BT;

定义变量j,定义队列q;

If 字符串不为空

创建新结点;

将数据传入结点;

左右孩子清零后入队;

else 树为空;

end if;

while 队列不为空

取队顶元素后入队;

J++

If 遇到‘#’

 左孩子为空

Else

创建新结点;

将数据传入结点;

左右孩子清零后入队;

End if;

J++;

If 遇到‘#’

 右孩子为空

else

创建新结点;

将数据传入结点;

左右孩子清零后入队;

end while;

2.3 代码截图

 

2.4 PTA提交列表说明。

 

发现输出后格式错误,请教同学后发现可以用静态变量来控制空格的有无,加上后就通过了。

 

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

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

创建二叉树;

创建栈t放数字;

创建栈q放运算符;

让第一个字符入栈;

While 字符串不为空

 If 不是运算符

  创建新节点T;

  赋值并使左右孩子清空然后入栈;

Else 判断顶部元素与字符串第j个字符的大小关系

    If 小于 入栈;

    If 等于 访问栈顶;

    If 大于 创建新节点;

           将栈顶元素赋值给T;

           左右孩子为栈顶元素

           T入栈t;

           访问栈q栈顶;

     End if;

    End while;

    While q栈顶元素不为#

       创建新节点并给q栈顶元素赋值

        右孩子为t栈顶元素

          If t不为空

            左孩子为t栈顶

             再次访问栈顶

          End if

         T入栈t;

         访问q栈顶元素

      End while;

表达式的值

 设置变量sum,x,y;

 If 左右子树结尾为空

 返回0

  递归使用a,b还未计算的下层元素

 Switch T的值不为空

+ - * /分别返回相应值(‘/’时若y为0,返回错误提醒;)

End if;

2.3 代码截图

 

2.4 PTA提交列表说明。

 

提交完发现编译错误,检查完发现代码中多打了几个符号,修改后通过。

 

2.1 题目3:7-2 根据后序和中序遍历输出先序遍历

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

定义2个数组;

定义变量n,I,j;

For i=0 to n

 输入后序遍历的数

For i=0 to n

输入中序遍历的数

 调用递归函数

 当遇到根结点时弹出

  输出根结点的值

  递归左子树

  递归右子树

2.3 代码截图

 

2.4 PTA提交列表说明。

提交后发现段错误,请教后发现原来是递归函数不严谨出现问题,经修改后成功通过

 

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

本次题目集总分:285
必做题共:230分

3.1 PTA排名截图

 

3.2 我的总分:2分

4. 阅读代码(必做)

 代码地址:https://gitee.com/changkong569/DataStructure/blob/master/Tree/BPlus/TestBPlusTree.cpp

本篇代码简洁明了,适合初学者阅读。

5. 代码Git提交记录截图

 

 

 

 

          

 

 

 

 

 

 

 

 

 

posted @ 2018-05-05 19:33  朱心溁  阅读(201)  评论(0编辑  收藏  举报