[理工]資結觀念一問
對於以下兩個複雜度,不太理解緣由,跪求解釋
1.search kth item in AVL tree =O(logn)
不是很理解此處要如何以logn搜得
2.output all data elements in order in singly linked-list =O(n)
也不是很懂,我想到最快的方法是先全output再排序,要O(nlogn)
感謝大家,剩不多天了,加油!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.94.109
※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1486180080.A.958.html
※ 編輯: ssssIssss (140.112.94.109), 02/04/2017 11:48:45
推
02/04 11:57, , 1F
02/04 11:57, 1F
→
02/04 11:57, , 2F
02/04 11:57, 2F
考場上,遇到都要預先假設sorted?
推
02/04 12:20, , 3F
02/04 12:20, 3F
是的,不過kth的話,應該要在每個node上附上他擁有的左子樹的node樹以供判斷,所以
我覺得O(logn)不太能理解@@
※ 編輯: ssssIssss (140.112.94.109), 02/04/2017 12:25:22
推
02/04 12:22, , 4F
02/04 12:22, 4F
→
02/04 12:22, , 5F
02/04 12:22, 5F
是分攤的概念嗎?在建樹的時候每次都順便花常數時間記下比自己小的(像是在insert n
ew node時路過便更新),然後search時就只要花費O(logn)找出k便可?
※ 編輯: ssssIssss (140.112.94.109), 02/04/2017 12:29:13
推
02/04 12:32, , 6F
02/04 12:32, 6F
→
02/04 12:32, , 7F
02/04 12:32, 7F
如同遇到linked-list的insert和delete一樣,直接假設已經的得到前一個node,所以只
需O(1)嗎,懂了!
※ 編輯: ssssIssss (223.136.98.91), 02/04/2017 12:45:20
推
02/04 15:03, , 8F
02/04 15:03, 8F
→
02/04 16:06, , 9F
02/04 16:06, 9F
推
02/04 16:48, , 10F
02/04 16:48, 10F
→
02/04 16:48, , 11F
02/04 16:48, 11F
推
02/04 16:54, , 12F
02/04 16:54, 12F
→
02/04 17:07, , 13F
02/04 17:07, 13F
→
02/04 17:07, , 14F
02/04 17:07, 14F
→
02/04 17:07, , 15F
02/04 17:07, 15F
→
02/04 17:10, , 16F
02/04 17:10, 16F
→
02/04 17:21, , 17F
02/04 17:21, 17F
→
02/04 17:31, , 18F
02/04 17:31, 18F
→
02/04 17:32, , 19F
02/04 17:32, 19F
推
02/04 21:55, , 20F
02/04 21:55, 20F
→
02/04 22:03, , 21F
02/04 22:03, 21F
是問kth沒錯喔!
我找到解法了,它命名為Augmented tree data structure,不知道跟你們說的Augmented
BST是否一樣
作法如下:建樹時,順便記錄自己左子樹的node數(假設為n)。在做search kth時,確
定root,若k=n+1則得解為root,若k<n+1則往左走、k>n+1則往右。最多走tree的高。
複雜度為O(logn)
※ 編輯: ssssIssss (140.112.94.109), 02/05/2017 10:40:28
→
02/05 10:59, , 22F
02/05 10:59, 22F
→
02/05 10:59, , 23F
02/05 10:59, 23F
考前多得到一個觀念就是賺啊!XD
※ 編輯: ssssIssss (140.112.94.109), 02/05/2017 11:32:13