概述 |
方法 | 描述 |
---|---|
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小時
改進狀況:
(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)