簡體   English   中英

BST樹到AVL

[英]BST tree to AVL

我想知道如何在BST的每個節點為O(nlogn)的時間內將BST轉換為avl:

struct node{
    int leftHeight;
    int rightHeight;
    struct node* lr;
    struct node* rc;
}

我是否必須訪問bst的每個節點以檢查余額是否不同於0,1,-1? 如果是這樣,我必須檢查它是一個右孩子還是一個左孩子,以便我分別執行左旋轉或右旋轉? 我怎么做?

我正在使用C。請不要判斷我我是一個初學者。

因此,您有一個二叉搜索樹,您想將其轉換為平衡搜索樹(AVL樹),想知道是否可以在O(n.log(n))中完成。

經過快速研究后,一般的方法是在構建樹時保持樹的平衡。 另一種方法是創建一個平衡的新樹(使用AVL算法)。

要就地平衡樹,可以使用Stout-Warren算法 ,該算法是我在另一個Stack Overflow問題中找到的參考,即平衡二分搜索樹

引用的文章指出其過程在線性時間內工作,即O(n)小於O(n.log(n))。

暫無
暫無

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

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