1.树节点的声明:
由于在AVL平衡树中需要对高度进行判断,因此比二叉树多了高度变量。
struct AvlNode //树节点
{
int Data;
AvlNode* Left;
AvlNode* Right;
int Height;
};
typedef AvlNode* Position;
typedef AvlNode* AvlTree;
2.一些常用的树操作:
AvlTree MakeEmpty(AvlTree T) //删除一整个树
{
if (T != NULL)
{
MakeEmpty(T->Left);
MakeEmpty(T->Right);
free(T);
}
return NULL;
}
Position Find(int x, AvlTree T) //在树中查找某元素
{
if (x < T->Data)
Find(x, T->Left);
else if (x > T->Data)
Find(x, T->Right);
else if (x == T->Data)
return T;
else
return NULL;
}
Position FindMax(AvlTree T) //查找树中最大值
{
if (T->Right == NULL)
return T;
else
FindMax(T->Right);
}
Position FindMin(AvlTree T) //查找树中最小值
{
if (T->Left == NULL)
return T;
else
FindMin(T->Left);
}
int Max(int a, int b) //查找两个数中的最大值
{
if (a > b)
return a;
else
return b;
}
static int Height(Position P) //求某节点高度
{
if (P == NULL)
return -1;
else
return P->Height;
}