if(T)
{
Visit(Value(T));
PreOrderTraverse(T->firstchild,Visit);
PreOrderTraverse(T->nextsibling,Visit);
}
}
void PostOrderTraverse(CSTree
T,void(*Visit)(TElemType))
{ //后根遍历树T。
CSTree p;
if(T)
{
if(T->firstchild)
{
PostOrderTraverse(T->firstchild,Visit);//先后根遍历长子子树。
p=T->firstchild->nextsibling;
while(p)
{ //再后根遍历所有兄弟子树。
PostOrderTraverse(p,Visit);
p=p->nextsibling;
}
}
Visit(Value(T)); //最后访问根结点。
}
}
void LevelOrderTraverse(CSTree
T,void(*Visit)(TElemType))
{ //层序遍历树T。
CSTree p;
LinkQueue q;
InitQueue(q);
if(T)
{
Visit(Value(T)); //先访问根结点。