概述 |
方法 | 描述 |
---|---|
addElement | 往树中添加一个元素 |
removeElement | 从树中删除一个元素 |
removeAllOccurrences | 从树中删除所指定元素的任何存在 |
removeMin | 删除树中最小的元素 |
removeMax | 删除树中最大的元素 |
findMin | 返回一个指向树中最小元素的引用 |
findMax | 返回一个指向树中最小元素的引用 |
用链表实现二叉查找树 |
用有序列表实现二叉查找树 |
操做 | 说明 |
---|---|
add | 向列表添加一个元素 |
removeFirst | 删除列表的首元素 |
removeLast | 删除列表的末元素 |
remove | 删除列表中一个特定元素 |
first | 考察列表前端那个元素 |
last | 考察列表末端那个元素 |
contains | 断定列表是否含有一个特定元素 |
is Empty | 断定列表是否为空 |
size | 断定列表中的元素数目 |
3.树的主要使用之一就是为其余集合提供高效的实现。
4.BinarySearchTreeList实现的分析:html
操做 | 说明 | LinkedList | BinarySearchTreeList |
---|---|---|---|
add | 向列表添加一个元素 | O(n) | O(log n)* |
removeFirst | 删除列表的首元素 | O(1) | O(log n) |
removeLast | 删除列表的末元素 | O(n) | O(log n) |
remove | 删除列表中一个特定元素 | O(n) | O(log n)* |
first | 考察列表前端那个元素 | O(1) | O(log n) |
last | 考察列表末端那个元素 | O(n) | O(log n) |
contains | 断定列表是否含有一个特定元素 | O(n) | O(log n) |
isEmpty | 断定列表是否为空 | O(1) | O(1) |
size | 断定列表中的元素数目 | O(1) | O(1) |
*add操做和remove操做均可能致使树变得不平衡。前端
平衡二叉查找树 |
4.左旋: 在最小平衡子树根节点平衡因子>=-2且在根节点的右孩子的右孩子插入元素,进行左旋。git
5.右左旋:最小平衡子树根节点(80)的右孩子(100)的左孩子(90)的子节点(95)插入新元素,先绕根节点的右孩子节点(100)右旋,再围根节点(80)左旋
算法
6.左右旋:在最小平衡子树根节点(80)的左孩子(50)的右孩子(70)的子节点插入新元素,先绕根节点的左孩子节点(50)右旋,再围根节点(80)左旋
数组
实现二叉查找树:AVL树 |
正确使用Markdown语法(加1分)
模板中的要素齐全(加1分)
教材学习中的问题和解决过程, (加3分)
代码调试中的问题和解决过程, 无问题
感想,体会真切的(加1分)
点评认真,能指出博客和代码中的问题的(加1分)数据结构
20172320
基于评分标准,我给以上博客打分:8分。得分状况以下:性能
在红黑树这一结,没看懂,很迷,我还须要再花点时间学习
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 8/8 | |
第二周 | 1306/1306 | 1/2 | 20/28 | |
第三周 | 1291/2597 | 1/3 | 18/46 | |
第四周 | 4361/6958 | 2/3 | 20/66 | |
第五周 | 1755/8713 | 1/6 | 20/86 | |
第六周 | 3349/12062 | 1/7 | 20/106 | |
第七周 | 3308/15370 | 1/8 | 20/126 |
参考:软件工程软件的估计为何这么难,软件工程 估计方法.net
计划学习时间:10小时设计
实际学习时间:8小时
改进状况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)