我想讓你給我一個提示,以證明Cormen一書中的這個練習: 「證明無論我們在一個高度爲h的二叉搜索樹中開始什麼節點,都要連續調用TREE-SUCCESSOR採取O(K + H)時間。「如何在二叉搜索樹上證明這一操作?
5
A
回答
6
- 讓
x
是起始節點和z
是後k
連續調用樹繼任結束節點。 - 讓
p
是x
和z
(含)之間的簡單路徑。 - 讓
y
成爲x
和z
的共同祖先即p
訪問。 - 的
p
的長度至多爲2h
,這是O(h)
。 - 讓
output
是元素的值是x.key
和z.key
(含)之間。 output
的大小是O(k)
。- 在
k
連續調用樹的繼任者, 是在p
節點的執行被訪問, 再說節點x
,y
和z
, 如果p
節點的子樹被訪問,那麼所有其元素在output
。 - 所以運行時間是
O(h+k)
。
3
提示:制定一個小例子,觀察結果,嘗試推斷原因。
要開始,這裏有一些事情要考慮。
從某個節點開始,k成功接收Tree-Succcesor構造的一棵樹。此步行訪問有多少(至少和最多)節點? (提示:考慮關鍵(x))。請記住,最多訪問兩次邊緣(爲什麼?)。
最後提示:結果爲O(2h+k)
。
+1
節點最多訪問3次。 –
相關問題
- 1. 二叉搜索樹操作
- 2. 二叉搜索樹刪除操作
- 3. 二叉搜索樹:插入操作
- 4. 這棵樹是二叉搜索樹嗎?
- 5. 二叉樹到二叉搜索樹(BST)
- 6. 如何從一個二叉搜索樹
- 7. 二叉搜索樹
- 8. 二叉搜索樹
- 9. 二叉搜索樹
- 10. 二叉搜索樹
- 11. 二叉搜索樹
- 12. 二叉搜索樹
- 13. 二叉搜索樹
- 14. 二叉搜索樹
- 15. AVL樹上的二叉搜索樹
- 16. 在二叉搜索樹
- 17. 在二叉搜索樹
- 18. 在二叉搜索樹
- 19. 二叉樹是二叉搜索樹,如果樹分佈在多臺機器上
- 20. 如何創建二叉樹(非二叉搜索樹)
- 21. 在二叉搜索樹中搜索值
- 22. 驗證二叉搜索樹 - JavaScript的
- 23. 二進制搜索樹搜索操作
- 24. 如何驗證給定的樹是否爲二叉搜索樹
- 25. 探索一個二叉搜索樹
- 26. 二叉樹歸納證明
- 27. PHP二叉搜索樹,如何遍歷
- 28. 如何構建二叉搜索樹
- 29. 如何識別二叉搜索樹
- 30. 方案二叉搜索樹
'在執行k個連續調用TREE-SUCCESSOR的過程中,p中的節點被訪問,並且除了節點x,y和z'你能解釋什麼是'y'嗎? –
我在答案中加了'y'。 –