1.前序遍历算法
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void PreOrderTraverse(BiTree T)
{
if(T==NULL)
return;
printf("%c",T->data);/*显示结点数据,可以更改为其他结点操作*/
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->lchild);
}
2.中序遍历算法
void InOrderTraverse(BiTree T)
{
if(T==NULL)
return;
InOrderTraverse(T->lchild);/*中序遍历左子树*/
printf("%c",T->data); /*显示结点数据,可以更改为对其他结点的操作*/
InOrderTraverse(T->rchild);/*最后中序遍历右子树*/
}
3.后序遍历算法
void PostOrderTraverse(BiTree T)
{
if(T==NULL)
return;
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c",T->data);
}
4.层序遍历算法
void layerTrace(BiTree T)
{
if(T==NULL) return;
BiTree p=T;
queue<BTreeNode*>q;
q.push(p);
while(!q.empty())
{
p=q.front();
q.pop();
cout<<p->data;
if(p->lchild!=NULL) q.push(p->lchild);
if(p->rchild!=NULL) q.push(p->rchild);
}
}