AVL平衡樹的實現(1)

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;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章