平衡二叉树的建立,查找,插入,调整,遍历的C语言实现

本文介绍了一个C语言程序,用于实现平衡二叉树的建立、查找、插入和平衡调整。程序不包含删除操作,通过右旋和左旋方法来保持树的平衡,并提供了中序遍历和查找特定元素的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*本程序实现了二叉树的建立,平衡,插入,查找,遍历
 由于平衡二叉树的删除非常复杂,这里就不做讨论了。
*/

#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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值