20182312第九周学习总结
20182312 2019-2020-1 《数据结构与面向对象程序设计》第九周学习总结
教材学习内容总结
第16章 树
1.树的度:表示树中任意结点的最大子结点数。
2.满树:如果树的所有叶节点都在同一层,并且每个非叶节点都正好有n个子节点,则称n叉树是满的。
3.完全二叉树:如果树是满的,或一直到倒数第二层都是满的且最底层的所有叶结点都位于树的左侧。
4.结点的层:从根到该节点的路径上的边数。
5.树的高度:树中从根到叶节点的最长路径的长度,有m个元素的完全2叉树的高度是log2(m)+1。
6.使用数组实现二叉树时,位于位置n的元素的左孩子在(2n+1)的位置,其右孩子在(2*(n+1))的位置。
7.树的遍历:先序,中序,后序,层序。
第17章 二叉查找树
1.树的左旋右旋:左旋:是以节点的"右分支"为轴,进行逆时针旋转。右旋:是以节点的“左分支"为轴,进行顺时针旋转。
2.平衡树:平衡因子小于等于1。
左旋图示:
左右旋图示:
教材学习中的问题和解决过程
- 问题1:左右旋具体该怎么操作。
- 问题1解决方案:当在ptr的左子树的右子树中插入一个结点后,造成了ptr平衡因子为-2的不平衡,将ptr向下找到当前结点的左孩子的右孩子,先进行左单旋ptr->left = subL,然后将ptr的右子树断开指向subR,此时便完成了旋转,最后将平衡因子进行更新。
- 问题2:怎么通过先序序列,后序序列,中序序列画出树
- 问题2解决方案:通过先序后序序列确定根节点,通过中序序列确定左右子树。
代码调试中的问题和解决过程
- 问题1:代码之中没有报错但是却出现了空指针错误
- 问题1解决方案:在定义new之前先调用了方法,交换两者的位置即可
代码托管
上周考试错题总结
- 错题1:
In an ideal implementations of a stack and a queue, all operations are ______________________ .
A.O(1)
B.O(n)
C.O(n log n)
D.O(n2)A
E.it depends on the operation 答案:A 题中所问为理想的栈和队列 - 错题2:
The import keyword is used to define your own packages.
A.true
B.false
答案:B
The package keyword is used to define packages of source code in Java. - 错题3:
It is possible to implement a stack and a queue in such a way that all operations take a constant amount of time.
A.true
B.false
答案:A
Ideal implementations of a stack and a queue have all operations requiring a constant amount of time. - 错题4:
In a linked implementation of a stack, a pushed element should be added to the end of the list.
A.true
B.false
答案:B
In a linked implementation of a stack, a pushed element should be added to the front of the list. If the element is added to the end of the list, the pop operation would require linear time, because we would need to go through the entire element to get a pointer to the next-to-last element in the list.
点评过的同学博客和代码
其他(感悟、思考等,可选)
这个树的学习我认为的重点在于逻辑上用代码对树这一结构的表达,对迭代器和递归的运用尤为重要,我们在建树的过程中需要有意识的加入递归和迭代,不然很麻烦。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 130/130 | 2/2 | 23/23 | |
第二周 | 451/581 | 3/5 | 42/67 | |
第三周 | 451/581 | 3/5 | 42/67 | |
第四周 | 617/1068 | 2/7 | 28/95 | |
第五周 | 632/1700 | 2/9 | 17/112 | |
第六周 | 666/2366 | 1/10 | 22/134 | |
第七周 | 1666/4032 | 3/13 | 42/178 | |
第八周 | 247/4279 | 1/14 | 3/181 | |
第九周 | 2817/7096 | 3/17 | 40/221 |
-
计划学习时间:60小时
-
实际学习时间:40小时
-
改进情况:没咋改,我感觉学的和以前没差。