# 20172307 2018-2019-1 《程序设计与数据结构》第7周学习总结
20172307 2018-2019-1 《程序设计与数据结构》第7周学习总结
教材学习内容总结
- 二叉查找树是一种含有附加属性的二叉树,即其左孩子小于父结点,而父结点又小于或等于右孩子。
- 每个BinaryTreeNode对象要维护一个指向结点所存储元素的引用,另外还要维护指向结点的每个孩子的引用。
- 从二叉查找树中删除一个元素时,必须推选出另一个结点来代替要被删除的那个结点。
- 二叉查找树的最右侧结点会存放最大元素,而其最左侧结点会存放最小元素。
- 树的主要作用之一就是为其他集合提供高效的 实现。
- 如果二叉查找树不平衡,其效率可能比线性结构还要低。
- 右子树的高度减去左子树的高度称为该结点的平衡因子。
- 树(或树的任何子树)只有两种途径能变得不平衡:插入结点或删除结点。
- 在某种程度上,红黑树中的平衡限制没有AVL树那么严格。但是,他们的序仍然是logn。
教材学习中的问题和解决过程
-
问题1:红黑树的删除操作
-
问题1解决方案:
1.待删除结点有两个外部结点,操作如下:(1)直接把该结点调整为叶结点
(2)若该结点是红色,则可直接删除,不影响红黑树的性质,算法结束
(3)若该结点是黑色,则删除后红黑树不平衡。此时要进行“双黑”操作
-
待删除结点有一个外部结点,操作为:
该节点是黑色,其非空子节点为红色 ;则将其子节点提升到该结点位置,颜色变黑
3.“双黑”结点的处理
分三种情况:(1)双黑色结点的兄弟结点是黑色,且子结点有红色结点(2)双黑结点的兄弟结点是黑色,且有两个黑色结点 (3)双黑结点的兄弟结点是红色结点
代码调试中的问题和解决过程
- 问题1:
- 问题1解决方案:
代码托管
上周考试错题总结
- What type does "compareTo" return?
A .int
B .String
C .boolean
D .char
错误:A 正确:B
解析:没有父结点的是根结点。
结对及互评
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 6/6 | |
第二周 | 612/612 | 1/2 | 18/24 | |
第三周 | 516/1128 | 1/3 | 16/40 | |
第四周 | 702/1830 | 2/5 | 16/56 | |
第五周 | 1926/3756 | 1/6 | 18/74 | |
第六周 | 948/4304 | 1/7 | 18/92 | |
第七周 | 771/5075 | 1/8 | 20/112 |