[英]How can I find the number of nodes that are smaller or equal to a given value in BST? (AVL TREE)
[英]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.