/*本程序实现了二叉树的建立,平衡,插入,查找,遍历
由于平衡二叉树的删除非常复杂,这里就不做讨论了。
*/
#include<stdio.h>
#include<stdlib.h>
#define LH 1
#define EH 0
#define RH -1
typedef struct BinaryTree//定义二叉树的结构
{
int data;//所要存储的数据
struct BinaryTree *lchild;//左孩子
struct BinaryTree *rchild;//右孩子
int bf;//平衡因子
int times;//同一个数据出现的次数
}BT,*pBT;
void R_router(pBT *T)//右旋转
{
pBT lc=(*T)->lchild;
(*T)->lchild=lc->rchild;
lc->rchild=(*T);
(*T)=lc;
}
void L_router(pBT *T)//左旋转
{
pBT rc=(*T)->rchild;
(*T)->rchild=rc->lchild;
rc->lchild=(*T);
(*T)=rc;
}
void LBalance(pBT *T)//左边调节
{
pBT lc=(*T)->lchild;
pBT lrc=(lc)->rchild;
switch(lc->bf)
{
case EH:
{
lc->bf=EH;
(*T)->bf=EH;
R_router(T);
}
break;
case RH:
{
switch(lrc->bf)
{
case LH:
{
lc->bf=EH;
(*T)->bf=RH;
lrc->bf=EH;
}break;
case EH:
{
lc->bf=EH;
(*T)->bf=EH;
lr
平衡二叉树的建立,查找,插入,调整,遍历的C语言实现
最新推荐文章于 2024-09-06 15:44:55 发布