二叉树的三种遍历方式

#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<<""; //按后序递归显示二叉树结点的值

       

}

上一篇:二叉树


下一篇:实验2:二叉树的创建和遍历