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

博客作业04--树

时间:2018-05-06 23:27:33      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:alt   ring   二叉树   思维   调试   遍历   算法   git   9.png   

1.学习总结(2分)

1.1树结构思维导图

技术分享图片

1.2 树结构学习体会

学了这么久的树,觉得树是一个很神奇也很复杂的东西,光是构造就有很多种,再加上各种遍历,对我来说是一道需要攻破的难关,首先呢要充分的学习递归的调用,递归熟了,树就攻下了大半了,其中树的一些复杂的构造,如:哈夫曼树的构造,线索二叉树的构造等,都需要借助课本来完成,自己还没有很明确的思路,并交集也不怎么明白。

2.PTA实验作业(4分)

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

2.2 设计思路

定义变量str和BT,输入str
利用函数BTree CreateBTree( string str , int n )构造树
定义树的指针BT
判断树是否空,如果str[1]==‘#‘代表根结点不存在,返回NULL,若输入的根结点位置不符合也返回NULL
给BT一个空间,new BTree;赋值;
利用孩子节点和双亲节点的下标位置关系(若双亲节点下标为i,则左孩子的下标为2i,右孩子下标为2i+1)递归构造树;
返回根结点指针
利用函数void Sum(BTree BT,int h)计算叶子节点的带权路径长度和
用类似遍历树的方法(先序、中序、后序)都行,并利用递归计算高度h
判断是否为叶子节点(左右孩子都为NULL)该叶子节点的权值为data*高度h;
用全局变量sum记录下总和

2.3 代码截图

技术分享图片

2.4 PTA提交列表说明。

技术分享图片

  • 图中的部分正确的思路是:先把所有叶子节点的值加起来再算出树的高度最后俩者相。,所以怎么调试都是部分正确。改了很久,想了想,如果树的叶子节点不在同一层那这样写的算法就错了,然后就改正过来了。

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

3.1 PTA排名

技术分享图片

3.2 我的得分:205

4. 阅读代码(必做,1分)

技术分享图片

技术分享图片

这篇代码是构建哈夫曼树的代码,书本上写的是利用ht数组来记录节点的孩子和双亲,而这篇代码直接构造了一棵链式储存的哈夫曼树,对于7-7的修理牧场来说,只需先构建一个哈夫曼树,在把不是叶子节点的节点data加起来就是题目的答案,思路简单,但是构建哈夫曼的代码对我来说只能借鉴,无法自己打出来。地址:https://blog.csdn.net/move_now/article/details/53398753.

5. 代码Git提交记录截图

技术分享图片

博客作业04--树

标签:alt   ring   二叉树   思维   调试   遍历   算法   git   9.png   

原文地址:https://www.cnblogs.com/bigll666/p/8994606.html

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