Algorithm 将一个二叉搜索树右转为另一个二叉搜索树的时间复杂度

Algorithm 将一个二叉搜索树右转为另一个二叉搜索树的时间复杂度,algorithm,recursion,time-complexity,binary-search-tree,Algorithm,Recursion,Time Complexity,Binary Search Tree,如果通过仅对T1执行右旋转,可以从T1获得T2,则BST T1可右转换为另一BST T2。我需要证明此操作可以在^2$右旋转中完成 假设我们得到T1可右转换为T2。 我理解算法的递归性质,因为我们首先使T2的根必须位于T1最左边的路径中,才能右转换为T1的根,然后对T1的2个子树重复此过程 然而,我不能拿出一个例子来证明最坏的情况下的行为。我能够想到这两棵树,虽然我不知道如何证明这是最坏的情况 Tree 1 Tree 2 6

如果通过仅对T1执行右旋转,可以从T1获得T2,则BST T1可右转换为另一BST T2。我需要证明此操作可以在^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

一般来说,如何找到需要$On^2$右旋转才能将一个BST转换为另一个BST的情况?

校对草图:

让T1=V,E,n=V。考虑从T1开始的重复右转过程中出现的树木序列。对于任何给定的旋转,让“旋转锚点”表示旋转子树的根节点

意见1: 旋转任何给定的子树都不会更改其顶点集

意见2: 在给定子树的任意右旋转序列中,每个顶点最多为一次旋转锚点。在每次右旋转中,锚定将迁移到右子树中。右旋转后的新根从左子树开始;或者,请注意,每次旋转时,右子树将增长1个顶点;因此,对于子树S,存在最大VS-1旋转

意见3: 右旋转不会更改子树的数量


任何树中的子树数等于可用根数V-1。因此,最大长度的右旋转序列涉及到子树,其中每个子树的旋转数为at max VS-1=共^2。

是的,我想我明白你的意思。你也可以提供一个树T1和T2的例子,涉及最坏情况下的旋转次数,这样可以帮助我更好地可视化它。谢谢