标签:ali 最大 参考资料 arc 错题 父节点 搜索 body 使用
上个星期学习了树,本星期接着学习树的一种扩展:二叉查找树(Binary Search Tree)。它最大的特点就是左孩子小于父节点,右孩子大于父节点,这种特点让二叉查找树从创建到插入元素都能维持排序的属性(主要表现在:中序遍历时元素能准确按照由小到大的顺序排列),有利于之后对树中元素的处理,特别是需要用到搜索时能大大提高搜索效率(低至O(log?n))(不平衡树除外╰(‵□′)╯)。
操作 | 说明 |
---|---|
addElement | 往树中添加一个元素 |
removeElement | 从树中删除一个元素 |
removeAllOccurences | 从树中删除所指定元素的任何存在 |
removeMin | 删除树中的最小元素 |
removeMax | 删除树中的最大元素 |
findMin | 返回一个指向树中最小元素的引用 |
findMax | 返回一个指向树中最大元素的引用 |
二叉查找树要表现出它高效的优点,必须要达到平衡,否则其效率甚至不如线性的链表。
为此,书中介绍了平衡化二叉查找树的方法——旋转,两种平衡化二叉查找树——AVL树、红黑树。
旋转:以右旋为例,其应用于左子树高度过高的非平衡树的平衡化中,步骤为:
(图)
左旋反之。并非所有不平衡问题只需要一次旋转就够解决了,在具体过程中要应变地使用左右旋转。
一、红黑树与AVL树作为平衡化二叉查找树的手段,两者到底各有何种优越性?
红黑树不追求"完全平衡",书中提到:
在某种程度上,红黑树中的平衡限制没有AVL树那么严格。但是...
非严格的平衡给红黑树带来了什么好处呢?——它的旋转次数得到降低,任何不平衡将在3次旋转以内解决,对于插入和删除导致的失衡,红黑树可以更快地调整自己的平衡。
二、
(无)
(statistics.sh脚本的运行结果截图)
上周无错题
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 6/6 | |
第二周 | 771/771 | 1/2 | 16/22 | |
第三周 | 562/1233 | 1/3 | 15/37 | |
第四周 | 1503/2736 | 2/5 | 15/52 | |
第五周 | 1152/3888 | 1/6 | 10/62 |
2018-2019-1 20172316《程序设计与数据结构》第八周学习总结
标签:ali 最大 参考资料 arc 错题 父节点 搜索 body 使用
原文地址:https://www.cnblogs.com/zhaoqianchen/p/9940771.html