【发布时间】:2020-07-19 06:52:38
【问题描述】:
如果可以通过仅对 T1 执行右旋转从 T1 获得 T2,则 BST T1 可以右转换为另一个 BST T2。我需要证明这个操作可以在 $O(n^2)$ 右旋中完成。
假设给定 T1 可以右转换为 T2。 我理解算法的递归性质,因为我们首先将 T2 的根(它必须在 T1 的最左边路径中才能右转换)到 T1 的根,然后重复此过程T1 的 2 个子树。
但是,我无法想出一个演示最坏情况行为的示例。尽管我不确定如何证明这是否是最坏的情况,但我能够想到这两棵树。
Tree 1 Tree 2
6 1
/ \
5 2
/ \
4 3
/ \
3 4
/ \
2 6
/ /
1 5
可以通过从节点 2 开始向右旋转 5+4+3+2 次,将树 1 右转换为 T2。
一般来说,我如何找到需要 $O(n^2)$ 右旋转才能将一个 BST 转换为另一个的情况?
【问题讨论】:
标签: algorithm recursion time-complexity binary-search-tree