关于二叉树的递归建立,在上一篇。 非递归的话,等有时间再写吧。
void PrintTElemType(TElemType e)//打印
{
printf("%c\n",e);
return ;
}
void PreOrder(BiTree T)//先序递归遍历
{
if(T)//不为空
{
PrintTElemType(T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
return;
}
void InOrder(BiTree T)//中序递归遍历
{
if(T)//不为空
{
InOrder(T->lchild);
PrintTElemType(T->data);
InOrder(T->rchild);
}
}
void PostOrder(BiTree T) //后序递归遍历
{
if(T)//不为空
{
PostOrder(T->lchild);
PostOrder(T->rchild);
PrintTElemType(T->data);
}
}
void LeverOrder(BiTree T)//层序非递归遍历
{
BiTree p[100];//指针数组
int i = 0,j = 0;
if(T)
p[j++] = T;//根节点
while(i<j)
{
PrintTElemType(p[i]->data);
if(p[i]->lchild)
p[j++] = p[i]->lchild;
if(p[i]->rchild)
p[j++] = p[i]->rchild;
i++;
}
}