Chinaunix首页 | 论坛 | 博客
  • 博客访问: 153202
  • 博文数量: 36
  • 博客积分: 802
  • 博客等级: 准尉
  • 技术积分: 717
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-02 22:47
文章分类
文章存档

2012年(36)

分类: C/C++

2012-09-04 17:17:02

平衡二叉树的四种情况:
1:LL型
               不平横,转变为                                
假设失衡节点A,在节点A的左子树的左子树插入新节点S,导致失衡,则可以有
B=A->left;
A->lchild=B->right;      B->right=A; 

如图:                         
2:RR型 
   不平衡,转变为            
RR型的与LL型对称,则不画图了,直接上代码
B=A->right;
A->right=B->left;        B->left=A;

3:LR型:
不平衡,转变为            

假设最底层失衡节点为A,在节点A的左子树的右子树插入新节点S导致失衡,如下图,则有算法:
B=A->left;    C=b->right;
B->right=C->left;
A->left=C->right;
C->left=B;
C->right=A;
如图:
    转变为   
4:RL型:
不平横,转变为
就不上图举例子,实质是一样的。
B=A->right;          C =B->left;
A->right=C->left;          B->left=C->right;
C->left=A;         C->right=B;


整体代码还写对。。。过几天补充。
阅读(1663) | 评论(0) | 转发(4) |
给主人留下些什么吧!~~