void PreOrder( BTNode *T) //先序
{
if(T != NULL)
{
printf("%c",T - > data);
PreOrder(T -> lchild);
PreOrder(T -> rchild);
}
}
void PreOrder( BTNode *T) //先序 非遞歸
{ BTNode *p;
InitStack(s); // 初始化棧
p = T; //p指向根節點
while(p || !StackEmpty(s))
{
if(p)
{
pop(S,p); //将p壓棧
if(p != NULL )
{
printf("%c",p - > data);
}
p = p - > lchild;
}
else
{
pop(S,p);
p = p - >rchild;
}
}
}
void InOrder( BTNode *T) //中序
{
if(T != NULL)
{
InOrder(T -> lchild);
printf("%c",T - > data);
InOrder(T -> rchild);
}
}
void InOrder( BTNode *T) //中序 非遞歸
{ BTNode *p;
InitStack(s); // 初始化棧
p = T; //p指向根節點
while(p || !StackEmpty(s))
{
if(p)
{
pop(S,p); //将p壓棧
p = p - > lchild;
}
else
{
pop(S,p);
if(p != NULL )
{
printf("%c",p - > data);
}
p = p - >rchild;
}
}
}
void PostOrder( BTNode *T) //後序
{
if(T != NULL)
{
PostOrder(T -> lchild);
PostOrder(T -> rchild);
printf("%c",T - > data);
}
}