[置顶] AVL旋转图及其代码的实现
2017-06-04 15:06
246 查看
1) 左单旋转
未插入前:
插入后:
旋转图:
旋转后:
下面是左单旋代码的实现:
2) 右单旋转
未插入前:
插入后:
旋转图:
旋转后:
下面是右单旋代码的实现:
3) 先左后右双旋
未插入前:
插入后:
左旋转图:
左旋转后:
右旋转图:
右旋转后:
下面是先左后右双旋代码的实现:
4) 先右后左双旋转
未插入前:
插入后:
右旋转图:
右旋转后:
左旋转图:
左旋转后:
下面是先右后左双旋转代码的实现:
未插入前:
插入后:
旋转图:
旋转后:
下面是左单旋代码的实现:
void _Rotatel(Node* parent) //左单旋 { Node* pSubR=parent->_pright; Node* pSubRL=pSubR->_pleft; Node * pPParent=parent->_pParent; parent->_pright=pSubRL; if(pSubRL) pSubRL->_pParent=parent; pSubR->_pleft =parent; parent->_pParent=pSubR; pSubR->_pParent=pPParent; if(NULL==pPParent) { _pRoot=pSubR ; pSubR->_pParent = NULL; } else { if(pPParent->_pleft==parent) pPParent->_pleft=pSubR; else pPParent->_pright=pSubR; //pSubR->_pParent = p 4000 PParent; } parent ->_bf=pSubR->_bf==0; //parent = pSubR; }
2) 右单旋转
未插入前:
插入后:
旋转图:
旋转后:
下面是右单旋代码的实现:
void _RotateR(Node* parent)//右单旋 { Node *pSubL = parent->_pleft; Node *pSubLR = pSubL->_pright; Node *ppParent = parent->_pParent; parent->_pleft = pSubLR; if (pSubLR) pSubLR->_pParent = parent; pSubL->_pright = parent; parent->_pParent = pSubL; if (NULL == ppParent) { _pRoot = pSubL; pSubL->_pParent = NULL; } else { if (parent == ppParent->_pleft) ppParent->_pleft = pSubL; else ppParent->_pright = pSubL; pSubL->_pParent = ppParent; } pSubL->_bf = parent->_bf = 0; parent = pSubL; }
3) 先左后右双旋
未插入前:
插入后:
左旋转图:
左旋转后:
右旋转图:
右旋转后:
下面是先左后右双旋代码的实现:
void _RotateLR(Node* pParent) { Node *pSubL = pParent->_pleft; Node *pSubLR = pSubL->_pright; _Rotatel(pParent->_pleft); _RotateR(pParent); if (-1 == pSubLR->_bf) pParent->_bf = 1; else if (1 == pSubLR->_bf) pSubL->_bf = -1; }
4) 先右后左双旋转
未插入前:
插入后:
右旋转图:
右旋转后:
左旋转图:
左旋转后:
下面是先右后左双旋转代码的实现:
void _RotateRL(Node* pParent) { Node *pSubR = pParent->_pright; Node *pSubRL = pSubR->_pleft; _RotateR(pParent ->_pright); _Rotatel(pParent); if (1 == pSubRL->_bf) pParent->_bf = -1; else if (-1 == pSubRL->_bf) pSubR->_bf = 1; }
相关文章推荐
- 支持向量机算法及其代码实现
- 用javascript实现旋转图片效果的代码
- 使用wojilu 无代码实现 输入框提示 及其背后的原理
- javascript椭圆旋转相册实现代码
- C#实现图片旋转的代码
- 利用Micro3D和JSR-184使用相同代码实现旋转立方体的效果
- 哈希表及其常用算法(代码实现)
- AVLTree旋转实现
- 【转】Silverlight用代码实现对任意控件向4个方向进行3D旋转
- UIImageView实现图片移动,缩放、旋转的代码片段
- 用JS操作FRAME中的IFRAME及其内容的实现代码
- 支持向量机算法及其代码实现
- OpenGL实现3D模型自由旋转——之代码解析
- ASP.NET中实现单点登录思路及其代码
- 卡尔曼滤波简介及其算法实现代码(转)
- 用javascript实现旋转图片效果的代码
- 用JS操作FRAME中的IFRAME及其内容的实现代码
- SilverLight用代码实现对任意控件向4个方向进行3D旋转的类
- JavaScript实现图片旋转构成3D圆环代码
- 黑马程序员—两种设计模式及其代码的实现—第11篇