证明下列的AA-树中删除的算法是正确的。
AATree
Remove(ElementType Item, AATree T)
{
static Position DeletePtr, LastPtr;
if (T!=NullNode)
{
LastPtr = T;
if(Item < T -> Element)
T->Left = Remove(Item, T->Left);
else
{
DeletePtr = T;
T-> Right = Remove(Item, T->Right);
}
if(T==LastPtr)
{
if(DeleterPtr != NullNode && Item == DeletePtr -> Element)
{
DeletePtr -> Element = T -> Elementl
DeletePtr = NullNode;
T=T->Right;
free(LastPtr);
}
}
else
if(T->Left->Level < T->Level-1 || T->Right->Level < T-> Level-1)
{
if(T->Right->Level > -- T->Lebel)
T->Right->Lebel = T->Level;
T=Skew(T);
T->Right = Skew(T->Right);
T->Right->Right = Skew(T->Right->Right);
T=Split(T);
T->Right = Split(T->Right);
}
}
return T;
} 