当然了,说是详细的注释,但其实只是自己的一些想法。
下面的代码只是简单的平衡二叉树的建立,还没有增添删除功能,我会在接下来的时间补完代码再进行编辑的。
如果有误,还请各位多多指点。万分感谢。
以下是代码部分:
#include<stdio.h>
#include<stdlib.h>
#define true 1
#define false 0
#define LH 1 //表示左子树高
#define RH -1 //表示右子树高
#define EH 0 //左右子树等高
typedef int Elemtype;
typedef int Status;
typedef struct BiNode{ //构建结构体
Elemtype data;
int bf; //平衡因子
struct BiNode *rchild;
struct BiNode *lchild;
}BiNode,*BiTree;
void L_Rotate(BiTree *T) //左旋
{
BiTree p;
p = (*T)->rchild;
(*T)->rchild = p->lchild;
p->lchild = *T;
*T = p;
}
void R_Rotate(BiTree *T) //右旋
{
BiTree p;
p = (*T)->lchild;
(*T)->lchild = p->rchild;
p->rchild = *T;
*T = p;
}
void RightBalance(BiTree *T) //