20162325 金立清 S2 W7 C16
20162325 2017-2018-2 《程序设计与数据结构》第7周学习总结
教材学习内容概要
树是非线性结构,其元素组织为一个层次结构
树的度表示树种任意结点的最大子结点数
有m个元素的平衡n叉树的高度是log n底m
树的遍历有4种方法
进行层序遍历时可用队列来储存树中的元素使用数组实现二叉树时,位于位置n的元素的左孩子在(2n+1)的位置,其右孩子在(2*(n+1))的位置
树的基于数组存储实现方式可以占据数组中的连续位置,不管树是不是完全树
如何在一般二叉树中添加及删除元素,要取决于树的用途
使用决策树可以设计专家系统
树
- 树(tree)是n( n≥0 )个结点的有限集。n=0时称为空树。在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当 n>1 时,其与结点可分为m( m>0 )个互不相交的有限集 T1,T2,...,Tm,其中每个集合本身又是一棵树,并且称为根的子树(SubTree)。
结点分类
- 结点拥有的子树数称为结点的度。度为0的结点称为叶结点(Leaf)或终端结点。除根结点外,分支结点也称为内部结点。树的度是树内各结点的度的最大值。
结点间关系
- 结点的子树的根称为该结点的孩子,相应地,该结点成为孩子的双亲。同一个双亲的孩子之间互称兄弟。结点的祖先是从根到该结点所经分支上的所有结点,反之,以某结点为根的子树的任一结点都称为该结点的子孙。
其他相关概念
结点的层次(Level)从根开始定义起,根为第一层,根的孩子为第二层。双亲在同一层的结点互称为堂兄弟。树中结点的最大层次成为树的深度(Depth)或高度。
若树中结点的各子树堪称从左到右是有次序的,不能互换的,则称该树为有序树,否则称为无序树。
森林(Forest)是m( m≥0 )棵互不相交的树的集合。
二叉树的结点度数至多为2
已知先序序列和后序序列,无法唯一确定一棵二叉树(另外两种可以);只知三者中一种,也不行
比较线性结构和树结构
线性结构 | 树结构 |
---|---|
第一个数据元素:无前驱 | 根结点:无双亲,唯一 |
最后一个数据元素:无后继 | 叶结点:无孩子,可以多个 |
中间元素:一个前驱,一个后继 | 中间元素:一个前驱,一个后继 |
中间元素:一个前驱,一个后继 | 中间元素:一个前驱,一个后继 |
二叉树
二叉树(Binary Tree)是n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。
二叉树特点:
1.每个结点最多有两棵子树,所以二叉树中不存在度大于2的结点。没有子树或者有一棵子树是可以的,最多有两棵子树。
2.左子树和右子树是有顺序的,次序不能颠倒。
3.即使树中某结点只有一棵子树,也要区分它是左子树还是右子树。二叉树具有五种基本形态:1.空二叉树;2.只有一个根结点;3.根结点只有左子树;4.根结点只有右子树;5.根结点既有左子树又有右子树。
特殊二叉树
斜树
- 所有的结点都只有左子树的二叉树叫左斜树。所有的结点都是只有右子树的二叉树叫右斜树。这二者统称为斜树。斜树有明显特点,每一层都只有一个结点,结点的个数和二叉树的深度相同。斜树和线性表结构一样,线性表结构是树的一种特殊表现形式。
满二叉树
- 在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上,这样的二叉树称为满二叉树。单是每个节点都存在左右子树,不能算是满n二叉树,还必须要所有的叶子结点都在同一层上,这样就做到了整棵树的平衡。所以,满二叉树的特点是:1.叶子只能出现在最下一层,出现在其他层就不能达到平衡;2.非叶子结点的度一定是2;3.在同样深度的二叉树中,满二叉树的结点最多,叶子数最多。
完全二叉树
对一棵具有n个结点的二叉树 按层序编号 ,如果编号为i(1≤i≤n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中位置完全相同,则这颗二叉树称为完全二叉树。
完全二叉树的特性:
(1)叶子结点只能出现在最下两层。
(2)最下层的叶子一定集中在左部连续位置。
(3)倒数第二层,若有叶子结点,一定都在右部连续位置。
(4)如果结点度为1,则该结点只有左孩子,即不存在只有右子树的情况。
(5)同样结点数的二叉树,完全二叉树的深度最小。
二叉树的性质
性质一:在二叉树的第i层上至多有 2^(i−1) 个结点(i≥1)。—–归纳法
性质二:深度为k的二叉树至多有 (2^k) −1 个结点(k≥1)。—–归纳法
性质三:对任何一棵二叉树T,如果其叶结点数为 n0,度为2的结点数为 n2,则 n0=n2+1。
设 n1 为度是1的结点数,那么T结点总数 n=n0+n1+n2 。换个角度,数数连接连线,因为根结点只有分支出去,没有分支进入,所以分支线总数为结点总数减去1,分支线总数为 n−1=n1+2n2 ,两个式子相减得到 n0=n2+1。
性质四:具有n个结点的完全二叉树的深度为 |log2底n|+1(其中|x|表示不大于x的最大整数)。
性质五:如果对一棵有n个结点的完全二叉树(深度为 |log2底n|+1)的结点按层序编号(从第1层到第 |log2底n|+1层,每层从左到右),对任一结点i(1≤i≤n)有:
1.如果 i=1,则结点i是二叉树的根,无双亲;如果 i>1,则其双亲是结点|i/2|。
2.如果2i>n,则结点i无左孩子(结点i为叶子结点);否则其左孩子是结点2i。
3.如果2i+1>n,则结点i无右孩子;否则其右孩子是结点2i+1。
教材学习中的问题和解决过程
问题1:课上测验第一题中问“有100个结点的完全二叉树的叶结点数是多少?” 按二叉树性质二,深度为k的二叉树至多有 2k−1 个结点,假设是满二叉树,则当k=7时最接近101,所以是7层,可计算前6层有63个结点,即第七层有100 - 63 =37个叶结点,但在看到完全二叉树与满二叉树的区别中写“完全二叉树最下层上的结点都集中在该层最左边的若干位置上”,又【倒数第二层,若有叶子结点,一定都在右部连续位置】,故认为最下层有且只能有左结点,倒数第二层有且只能有右结点,理解不了为什么“第六层有32-19=13个叶子节点”中的19是如何得出的,按道理第六层应该不含叶结点才对,因为都与第七层相连了。
问题1解决方案:通过张之睿同学的解释,“完全二叉树最下层上的结点都集中在该层最左边的若干位置上”其实是指靠左排布,倒数第二层也是靠右排布,第七层的37个叶节点要占第六层19个节点(37/2=18余1,18个结点满度),所以减19,总共50个叶子结点。
代码调试中的问题和解决过程
- 问题1:在实现书上代码时,
BTNode
类和LinkedBinaryTree
类中有一个没出现过的类——ArrayIterator
,java的包里找到,询问搭档也无果。
- 问题1解决方案:娄老师找了三个版本的教材,但未能找到这个类,尚待解决。
代码托管
上周考试错题总结
本周结对学习情况
- 20162311
- 结对学习内容
- 二叉树的性质
- 课堂练习题
其他(感悟、思考等,可选)
- 这周学的树,与以往的线性结构不同,虽然对课堂上讲的性质与练习题,接受上没有问题,但课下对几种遍历的实现理解起来还是很困难,希望通过更多的查看相关博客和尝试编码,能够基本顺利完成下堂课的实验……(虽然还是害怕
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 58/ | 1/1 | 10/10 | |
第二周 | 8/18 | |||
第三周 | 134/ | 3/4 | 12/ 30 | |
第四周 | 2/6 | 12/42 | ||
第五&六周 | 750/ 6595 | 5/11 | 24/66 | |
第七周 | 764/7068 | 7/13 | 18/84 |
计划学习时间: 18小时
实际学习时间: 18小时
改进情况:多思考,多总结
参考资料
《Java程序设计与数据结构教程(第二版)》
- 《Java程序设计与数据结构教程(第二版)》学习指导
- 树PPT
CSDN博客
转载于:https://www.cnblogs.com/JXY6996/p/7698499.html
20162325 金立清 S2 W7 C16相关推荐
- 20162325 金立清 S2 W8 C17
20162325 2017-2018-2 <程序设计与数据结构>第8周学习总结 教材学习内容概要 二叉查找树是一棵二叉树,对于其中的每个结点,左子树上的元素小于父结点的值,而右子树上的元素 ...
- 20162325金立清第三周作业
20162325 2016-2017-2 <程序设计与数据结构>第3周学习总结 教材学习内容总结 学会如何创建对象 认识String类.类库 掌握枚举类.包装类 教材学习中的问题和解决过程 ...
- 结对编程-马尔科夫链作业成绩
结对编程-马尔科夫链作业成绩 作业博客:http://www.cnblogs.com/vertextao/p/6881960.html 问题 本次作业仅有三位同学按时提交,两位同学延迟提交,出人意料, ...
- 2017-2018-1 我爱学Java 第一周 作业
构建之法 成员及分工 内容简介 作者简介 分章学习及问题 第一章 概论 第二章 个人技术和流程 第三章 软件工程师的成长 第四章 两人合作 第五章 团队和流程 第六章 敏捷流程 第七章 实战中的软件工 ...
- Scrum 冲刺 第一日
Scrum 冲刺 第一日 站立式会议 燃尽图 Alpha 阶段认领任务 明日任务安排 项目预期任务量 成员贡献值计算规则 今日贡献量 参考资料 站立式会议 返回目录 燃尽图 返回目录 Alpha 阶段 ...
- 在线生成大全(这里真的什么都有)
粉丝身份证:http://id.igogo8.com/ 制作印章:http://www.makepic.com/print.php 邮址图片生成:http://www.makepic.com/emai ...
- php 图片印章_在线生成实用又方便 (图片印章)
1.Eoool在线制作LOGO.Banner.Email.Rss.签名.头像,但模板比较少,格式也比较少.- T2 W* p5 T0 D: R# M/ } http://www.eoool.com & ...
- 2017-2018-1 Java演绎法 小组会议及交互汇总
第一周会议 今天我们小组开展了第一次团队例会活动.我们小组将<构建之法>分为了六个部分并由六位成员先分别学习并向组长上传学习收获,这次的活动内容便是 交流前两周小组成员学习阅读<构建 ...
- 【Alpha版本】冲刺阶段 - Day7 - 靠泊
Alpha:指集成了主要功能的第一个试用版本.在这个版本中有些小功能并未实现.事实上很多软件的 Alpha 版本只是在内部使用.给外部用户使用的 Alpha 版本会起一个比较美妙的名字,例如,技术预览 ...
最新文章
- struts2笔记01-环境搭建
- nodejs回调函数理解
- 统计学习三要素 模型+策略+算法
- ubuntu 14.04设备OVS虚拟OpenFlow交换机配置汇总
- 阿里技术专家推荐的20本书,免费送!
- nyoj-257-郁闷的C小加(一 )中缀式变后缀式
- pythoncsv文件的操作_python操作CSV文件
- 易优CMS精美简洁作文范文网站模板源码
- 在IOC中装配Bean
- 如何禁止TextBox的记忆功能
- 如何在 Mac 上的“通知中心”中添加和自定小组件?
- 利用反射和元数据编写的通用更新和通用查询
- TFS2010中文版下载
- 一名优秀项目经理需具备的五种基本素质及八大管理技能
- java实习第一天日志
- 计算机教学特点怎么写,中学计算机教学特点.doc
- IIS 部署php程序
- Windows桌面应用程序(1-2-4-4th) 您的第一个Direct2D程序
- 2022年安全员-A证考试题库及安全员-A证免费试题
- c++ abs 取绝对值函数
热门文章
- python-try-except介绍
- vue3.0计算属性
- [附源码]计算机毕业设计Python现代诗歌交流平台(程序+源码+LW文档)
- 创建服务的时候发生了Renamed existing log file错误
- 奔腾64位计算机,电脑Intel奔腾e6700 cpu参数能用64位win7系统吗
- AI in WAF︱腾讯云网站管家 WAF:爬虫 Bot 程序管理方案
- 树莓派3B摄像头的详细使用教程(拍照+录像+监控)
- CAD软件标注样式的设置
- Android 输入法
- 串口命令调试的那些骚操作