69,373
社区成员
发帖
与我相关
我的任务
分享
//n久前的代码
//算法来源是taocp
//后序的更复杂。。。杯具
template<typename Type>
template<typename OP>
void AVLTree<Type>::PreInOrder(int type, OP ope)
{
pNodeType Curr = head->LChild;
pNodeType R = NULL;
while (true)
{
if (Curr == NULL) break;
pNodeType q = Curr->LChild;
if (q == NULL)
{
ope(Curr->Data);
R = Curr;
Curr = Curr->RChild;
}
else
{
while (q->RChild != NULL && q->RChild != Curr)
q = q->RChild;
if (q->RChild == NULL)
{
q->RChild = Curr;
if (type == 0) ope(Curr->Data);;
Curr = Curr->LChild;
}
else
{
R = Curr;
if (type == 1) ope(Curr->Data);
Curr = Curr->RChild;
q->RChild = NULL;
}
}
}
}