您所在位置: 网站首页 / AvLTree.doc / 文档详情
AvLTree.doc 立即下载
2024-10-28
约4.9千字
约7页
0
37KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

免费试读已结束,剩余 2 页请下载文档后查看

16 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

峻岭云松
avltree
#ifndefAVLTREE_H
#defineAVLTREE_H1
typedefstructAvlNode*Position;
typedefstructAvlNode*AvlTree;
typedefintElementType;
structAvlNode
{
	intElement;
	AvlTreeLeft;
	AvlTreeRight;
	intHeight;
};
PositionFind(ElementTypex,AvlTreeT);
PositionFindMax(AvlTreeT);
PositionFindMin(AvlTreeT);
Max(inta,intb);
AvlTreeMakeEmpty(AvlTreeT);
AvlTreeInsert(ElementTypex,AvlTreeT);
AvlTreeDelete(ElementTypex,AvlTreeT);
ElementTypeRetrieve(PositionP);
voiddayin(AvlTreeT);
intHeight(PositionP);
#endif

#include<stdio.h>
#include<malloc.h>
#include"AvlTree.h"
intHeight(PositionP)
{
	if(P==NULL)
		return-1;
	elsereturnP->Height;
}
PositionFindMax(AvlTreeT)
{
	if(T!=NULL)
		while(T->Right!=NULL)
			T=T->Right;
		returnT;
}
PositionFindMin(AvlTreeT)
{
	if(T==NULL)
		returnNULL;
	else
		if(T->Left==NULL)
			returnT;
		else
			returnFindMin(T->Left);
}
Max(inta,intb)
{
	if(a>b)
		returna;
	else
		returnb;
	
	returnb;
}
staticPositionSingleRotateWithLeft(Positionk2)
{
	Positionk1;
	k1=k2->Left;
	k2->Left=k1->Right;
	k1->Right=k2;
	k2->Height=Max(Height(k2->Left),Height(k2->Right))+1;
	k1->Height=Max(Height(k1->Left),k2->Height)+1;
	returnk1;
}
staticPositionSingleRotateWithRight(Positionk3)
{
	Positionk4;
	k4=k3->Right;
	k3->Right=k4->Left;
	k4->Left=k3;
	k3->Height=Max(Height(k3->Right),Height(k3->Left))+1;
	k4->Height=Max(Height(k4->Right),k4->Height)+1;
	returnk4;
}
staticPositionDoubleRotateWithLeft(Positionk5)
{
	k5->Left=SingleRotateWithRight(k5->Left);
	returnSingleRotateWithLeft(k5);
}
staticPositionDoubleRotateWithRight(Positionk6)
{
	k6->Right=SingleRotateWithLeft(k6->Right);
	returnSingleRotateWithRight(k6);
}

AvlTreeMakeEmpty(AvlTreeT)
{
	T=(structAvlNode*)malloc(sizeof(structAvlNode));
	if(T!=NULL)
	{
		T->Left=T->Right=NULL;
T->Height=0;	
	}
	returnT;
}
AvlTreeInsert(ElementTypex,AvlTreeT)
{
	if(T==NULL)
	{
		T=(structAvlNode*)malloc(sizeof(structAvlNode));
		if(T==NULL)
			printf("Outofspace");
		else
		{
			T->Element=x;
			T->Height=0;
			T->Left=T->Right=NULL;
		
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

AvLTree

文档大小:37KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用