转换树需要多少右转?

时间:2015-03-26 10:55:24

标签: algorithm data-structures graph tree graph-theory

我选择了一个很好的面试问题。有人可以为我澄清一下吗?

  

假设给出了一个包含6个节点的二叉树,这样每个节点都有   只留下孩子。有多少"右旋"操作(没有任何左翼   我们可以将这棵树转换成每个节点只有的树   正确的孩子?

我的解决方案:

我认为n-1轮换就足够了(通过模拟),但是我可以做一个证明,哪位专家可以帮助我提供证据或想法?

1 个答案:

答案 0 :(得分:1)

树以root节点和左边5个孩子(n-1个孩子)开头。围绕root的每次旋转都会使右边的孩子数量增加1.因此,在5次旋转(意味着n-1次旋转)后,所有孩子都将在右侧。

通过归纳证明:建议在n轮换后,右侧有n个孩子。

步骤1:旋转1次后,右侧有1个孩子。

步骤2:假设在n轮换后,右侧有n个孩子,并证明在n+1轮换后,右侧有n+1个孩子。

enter image description here