20172312 2018-2019-1 《程序设计与数据结构》第六周学习总结
20172312 2018-2019-1 《程序设计与数据结构》第六周学习总结
教材学习内容总结
第七章
数据结构——树
1.树是一个n(n>=0)个结点的有序合集
2.名词理解
结点:指树中的一个元素;
结点的度:指结点拥有的子树的个数,二叉树的度不大于2;
数的度:指树中的最大结点度数;
叶子:度为0的结点,也称为终端结点;
高度:叶子节点的高度为1,根节点高度最高;
层:根在第一层,以此类推;
3.四种遍历
先序遍历:根->左子树->右子树
中序遍历:左子树->根->右子树
后序遍历:左子树->右子树->根
层级遍历:根->下层
二叉树
1.二叉树定义:由一个结点和两颗互不相交、分别称为这个根的左子树和右子树的二叉树构成(递归定义)
2.二叉树的第h层上至多有2^(h-1)个结点
3.高度度为h的二叉树,至多有2^h-1个结点
4.满二叉树:叶子节点一定要在最后一层,并且所有非叶子节点都存在左child和右child;
5.二叉树操作
getRoot 返回指向二叉树根的引用
isEmpty 判定该树是否为空
size 判定树中的元素数目
contains 判定指定目标是否在该树中
find 如果找到指定元素,返回指向其的引用
toString 返回树的字符串表示
iteratorInOrder 为树的中序遍历返回一个迭代器
iteratorPreOrder 为树的前序遍历返回一个迭代器
iteratorPostOrder 为树的后序遍历返回一个迭代器
iteratorLevelOrder 为树的层序遍历返回一个迭代器
完全二叉树
1.完全二叉树:从左到右、从上到下构建的二叉树;
2.结点 h 的子结点为2h和 2h+1(前提是都小于总结点数)
3.结点 h 的父结点为 h/2
教材学习中的问题和解决过程
- 问题1:关于完全二叉树已知结点数n,求层数h,叶子结点数n0。
- 问题1解决方案:完全二叉树除h层外,1~h-1层均为一个父节点对应两个子节点(满二叉树),所以对n进行计算log2n,计算得数向上取整即为h。
代码调试中的问题和解决过程
- 无(除了代码太长太多之外)
码云链接
结对及互评
本周结对学习情况
- 20172315
- 20172318
结对学习内容
- pp10.4 pp10.5
- 完全二叉树
学习进度条
代码行数(新增/累积) | 博客数量(新增/累积) | 学习时长(新增/累积) | ||
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 22/22 | 1/1 | 12/12 | |
第二周 | 203/225 | 2/3 | 25/37 | |
第三周 | 574/799 | 1/4 | 15/52 | |
第四周 | 1283/1882 | 2/6 | 20/72 | |
第五周 | 986/2868 | 1/7 |
20/92 |
|
第六周 | 1037/3905 | 1/8 |
25/107 |