[理工] 資演 Tree Unbalanced Rotation

看板Grad-ProbAsk作者 (還很新)時間7年前 (2017/01/23 07:40), 7年前編輯推噓7(7013)
留言20則, 5人參與, 最新討論串1/1
http://i.imgur.com/uEcRqth.jpg
想請問第二題 跟第三題 rotation的complexity是指中間鍵值往上的調整動作吧?那麽時間複雜度是O(log n) 還 是更大? 我的想法是調整動到的node數不會大於樹高...不知道有沒有錯 第三題問說union三個排序資料,然後保持平衡,假設不平衡點一定小於n個 我的想法是最多只會有n個不平衡點,實際上應該更少 所以是n*O(log n)嗎 但還是不明白 rotation的複雜度跟union後的平衡調整,時間複雜度應該是什麽,翻了翻 筆記不知道自己是不是有漏抄 ... 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.200.66 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1485128428.A.E06.html ※ 編輯: newpuma (223.137.200.66), 01/23/2017 07:51:50

01/23 07:53, , 1F
3.已經sorting了,把三個merge花O(n),中位數當root
01/23 07:53, 1F

01/23 07:53, , 2F
,左右半部遞迴去做,總共是O(n)
01/23 07:53, 2F
merge花O(n) 剩下的只要遞迴建樹就好 原來如此 那第二題呢? ※ 編輯: newpuma (223.137.200.66), 01/23/2017 08:05:34

01/23 08:29, , 3F
第二題我是舉一個skew-binary tree,然後多做幾次觀察
01/23 08:29, 3F

01/23 08:30, , 4F
確實是O(logn)
01/23 08:30, 4F

01/23 09:53, , 5F
如果是一個 binary tree 每個 node 只有右子樹 也可以在
01/23 09:53, 5F

01/23 09:53, , 6F
O(lg n) 時間內 rotate 到 balance ?
01/23 09:53, 6F

01/23 10:23, , 7F
對每個點從unbalanced到balanced要花O(1),總共要做O(log
01/23 10:23, 7F

01/23 10:23, , 8F
)次,是嘛(?)
01/23 10:23, 8F

01/23 10:36, , 9F
它不是問幾次rotations嗎 ,無關時間複雜度吧
01/23 10:36, 9F

01/23 10:43, , 10F
我是這樣想 每次 rotation 頂多只能把樹高減少一層
01/23 10:43, 10F

01/23 10:44, , 11F
如果 unbalnaced tree height 是O(n)
01/23 10:44, 11F

01/23 10:44, , 12F
我認為是O(n/2)
01/23 10:44, 12F

01/23 10:44, , 13F
要怎麼用 O(lg n) rotations 把它 balance?
01/23 10:44, 13F

01/23 10:46, , 14F
我剛剛發現我rotation的方式錯了,應該是O(n/2)沒錯
01/23 10:46, 14F

01/23 10:46, , 15F
每次rotation,左邊-1,右邊+1
01/23 10:46, 15F

01/23 10:47, , 16F
剛剛想成用折的,所以錯了
01/23 10:47, 16F

01/23 10:53, , 17F
每個binary search tree n個點共有n-1種 rotation
01/23 10:53, 17F

01/23 10:54, , 18F
目前可知在O(n-1) rotations內一定可以完成balance
01/23 10:54, 18F

01/23 10:55, , 19F
F 大的所說的方式應該是最保險的
01/23 10:55, 19F

01/23 11:00, , 20F
感謝k大和F大的糾正QQ
01/23 11:00, 20F
文章代碼(AID): #1OXKBiu6 (Grad-ProbAsk)