二叉树的三种遍历方式
#include<iostream>
using namespace std;
#define QUEUE_INIT_SIZE 100 //循环队列初始元素个数
#define QUEUEINCREMENT 10 //循环队列空间扩展增量
typedef char TElemType;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild, *rchild; /*左右孩子指针*/
}BiTNode, *BiTree;
//创建二叉树(先序遍历方式)
void CreateBiTree (BiTree &T) {
char ch;
/
cin>>ch;
if(ch=='#')
{
T=NULL;
}
else
{
T=new BiTNode; //生成根节点
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}//按先序输入二叉树结点的值(#表示空),递归创建二叉链表
}
//先序遍历
void PreOrderTraverse (BiTree T) {
if(T)
{
cout<<T->data;
PreOrderTraverse (T->lchild);
PreOrderTraverse (T->rchild);
}
else cout<<"";//按先序递归显示二叉树结点的值
}
//中序遍历
void InOrderTraverse (BiTree T) {
if(T)
{
InOrderTraverse(T->lchild);
cout<<T->data;
InOrderTraverse(T->rchild);
}
else cout<<""; //按中序递归显示二叉树结点的值
}
//后序遍历
void PostOrderTraverse (BiTree T) {
if(T)
{
PostOrderTraverse (T->lchild);
PostOrderTraverse (T->rchild);
cout<<T->data;
}
else cout<<""; //按后序递归显示二叉树结点的值
}