[英]Inserting a new value in binary search tree
通過使用將新值v
插入二進制搜索樹T
Tree-Insert(T, v)
算法,以下算法通過將數組的給定部分中的每個值重復插入到樹中來增長二進制搜索樹:
Tree-Grow(A, first, last, T)
1 for i ← first to last
2 do Tree-Insert(T, A[i])
如果樹最初是空的,並且數組部分的長度(即last-first + 1)為n,則上述算法的最佳情況和最壞情況漸近運行時間分別是多少?
當n = 7時,給出算法的最佳實例(作為包含數字1至7的數組,按特定順序)和最差實例(以相同形式)。
如果對數組進行了排序並且所有值都是不同的,請找到一種方法來修改Tree-Grow,以便它始終生成最短的樹。
改進算法的最佳情況和最壞情況漸近運行時間分別是多少?
請用homework
標簽標記作業問題。 為了在期末考試中取得出色的成績,我建議您實際學習這些知識,但我不是來這里判斷您的。
1)從頭到尾進行迭代需要O(n)。 插入二叉樹需要O(lg n),因此在最佳情況下,您顯示的算法需要O(n lg n)。
插入二叉樹的最壞情況是樹真的很長,但又不是很濃密。 類似於鏈表。 在那種情況下,將需要O(n)進行插入,因此在最壞的情況下將需要O(n ^ 2)。
2)最佳情況:[4、2、6、1、3、5、7],最壞情況:[1、2、3、4、5、6、7]
3)使用n / 2索引作為根,然后遞歸地對數組的左側和右側執行此操作。
4)O(n lg n)在最好和最壞的情況下。
我希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.