平衡二叉树的构建

 二叉平衡树,边插入边调整,对每一次插入都有判断调整,所以总过程是插入——判断——调整,判断与调整写在同一个
函数里面,LeftBalance/rightBalance;虽然有四种旋转,但实际上可归结为两种,平衡因子为+2与-2的,当然还有一种是<的;+2是左子树太长了,+2也有两种情况,一种是/型,还有种是<型,前者我们称作LL调整,需要右旋即可,后者我们称作LR型,需要对其下面的左旋,再对上面的右旋,+2调整函数是LeftBalance;-2是左子树不管了,-2的同理;判断通过平衡因子

/***********************************
二叉平衡树,边插入边调整,对每一次插入都有判断调整,
所以总过程是插入——判断——调整,判断与调整写在同一个
函数里面,LeftBalance/rightBalance;虽然有四种旋转,但
实际上可归结为两种,平衡因子为+2与-2的,当然还有一种
是<2的;+2是左子树太长了,+2也有两种情况,一种是/型,
还有种是<型,前者我们称作LL调整,需要右旋即可,后者
我们称作LR型,需要对其下面的左旋,再对上面的右旋,+2
调整函数是LeftBalance;-2是左子树不管了,-2的同理;
判断通过平衡因子

***********************************/

#include<stdio.h>
#include<stdlib.h>
#define EH 0            /*等高*/
#define LH 1            /*左高*/
#define RH -1            /*右高*/

typedef int ElemType;                 /*数据类型*/

typedef struct BiTree{
    ElemType data;                    /*数据元素*/
    int BF;                         /*平衡因子*/
    struct BiTree *lchild,*rchild;     /*左右子女指针*/
}*Bitree,BitreeNode;


int InsertAVL
  • 9
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值