簡體   English   中英

在AVL樹中找到大小為k的頂點

[英]Find a vertex of size k in an AVL tree

設a為具有n個頂點的AVL樹。 每個頂點都有一個擴展,該擴展表示以其本人為根的子樹的大小。 我正在嘗試實現一種算法,該算法獲得輸入數k st 1 <= k <= n並返回O(logn)中大小為k的頂點。

如果樹是完整的二叉樹,我們很容易就可以左右移動,直到我們到達所需大小的節點為止,因為高度為h的所有節點都將具有相同的大小。 但是,當樹還沒滿的時候,我就會陷入困境。

任何幫助都感激不盡。

提前致謝!

PS我假設每個頂點都有不同的值。

首先,檢查左子樹是否大於k,如果大於->繼續在其中搜索。 否則,檢查左子樹的大小+ 1是否等於k,在這種情況下,當前元素為第k個,因此返回當前節點。 如果達到這一點,則意味着第k個元素將位於右側子樹中,因此請移至右側子樹並搜索k-(左側子樹大小+ 1)元素,因為已經消除了所有這些節點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM