二叉树的遍历,是将树形结构线性化的过程。
#include<iostream>
#include<queue>
using namespace std;
typedef char Elemtype;
typedef struct BiTNode
{
Elemtype data;
BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void PreOrderTraverse(BiTree T)//前序
{
if(!T)return ;
printf("%c",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
void OrderTraverse(BiTree T)//中序
{
if(!T)return ;
OrderTraverse(T->lchild);
printf("%c",T->data);
OrderTraverse(T->rchild);
}
void PostOrderTraverse(BiTree T)//后序
{
if(!T)return ;
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c",T->data);
}
void LayerTraverse(BiTree T)//层次
{
if(!T)return ;
queue<BiTree> ue;
ue.push(T);
while(!ue.empty)
{
BiTNode * tmp = ue.front();
printf("%c",tmp->data);
if(tmp->lchild)
{
ue.push(tmp->lchild);
}
if(tmp->rchild)
{
ue.push(tmp->rchild);
}
ue.pop();
}
}