平衡二叉树的构建

本文介绍了如何构建平衡二叉树,包括插入元素后的判断和调整过程。在每次插入后,通过平衡因子来决定是否需要进行调整。调整主要针对平衡因子为+2或-2的情况,分别对应左子树过长(LL/LR调整)和右子树过长。通过LeftBalance和RightBalance函数实现相应的旋转操作,确保树的平衡。
摘要由CSDN通过智能技术生成

 二叉平衡树,边插入边调整,对每一次插入都有判断调整,所以总过程是插入——判断——调整,判断与调整写在同一个
函数里面,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、付费专栏及课程。

余额充值