繁体   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