我偶然发现了这个问题: 给定具有2 ^ n-1个节点的二叉搜索树,给出一种有效的算法将其转换为自平衡树(如avl或RB树)。并分析其最坏情况下的运行时间与n的函数关系。
我认为最有效的算法是在n(n)时间为n个节点,但2 ^ n-1个节点是棘手的部分。不知道那时的运行时间是什么?
任何帮助将不胜感激
答案 0 :(得分:1)
如果您已经有解决此问题的线性时间算法,那太好了!这样想吧。设m = 2 n - 1.如果你有一个平衡树的算法并且在节点数量上按时间线性运行,那么你的算法在这种情况下运行时间为O(m),是很棒的。不要让指数时间吓到你;如果运算符在大小为2 n - 1的输入上为O(2 n ),那么您就可以高效运行。
至于特定的算法,你似乎已经知道了一个,但是如果你还没有听说过它,请查看Day-Stout-Warren algorithm,它可以最佳地重建树,并在线性时间和常数中进行空间。