码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树左旋和右旋

时间:2015-08-05 21:49:24      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

转自:http://blog.csdn.net/tuhuolong/article/details/6844850

树的旋转,分为左旋和右旋,以下借助图来做形象的解释和介绍:

1.左旋(右子为轴,当前结点左旋)

技术分享

如上图所示:

当在某个结点pivot上,做左旋操作时,我们假设它的右孩子y不是NIL[T],pivot可以为树内任意右孩子而不是NIL[T]的结点。

左旋以pivot到y之间的链为“支轴”进行,它使y成为该孩子树新的根,而y的左孩子b则成为pivot的右孩子。

来看算法导论对此操作的算法实现(以x代替上述的pivot):

 LEFT-ROTATE(T, x)
1  ← right[x] ? Set y.
2  right[x] ← left[y]      ? Turn y‘s left subtree into x‘s right subtree.

3  p[left[y]] ← x
4  p[y] ← p[x]             ? Link x‘s parent to y.
5  if p[x] = nil[T]
6     then root[T] ← y
7     else if x = left[p[x]]
8             then left[p[x]] ← y
9             else right[p[x]] ← y
10  left[y] ← x             ? Put x on y‘s left.
11  p[x] ← y

 

 

2.右旋

右旋与左旋差不多,再此不做详细介绍。

技术分享

二叉树左旋和右旋

标签:

原文地址:http://www.cnblogs.com/zl1991/p/4705745.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!