- 原理圖:
-
- 源程序代碼:
-
-
-
- # include <malloc.h>
- # include <iostream>
- # include <conio.h>
- # define OK 1
- # define ERROR 0
-
- using namespace std;
-
- typedef char TElemType;
-
- typedef struct BiTNode
- { TElemType data;
- struct BiTNode *lchild,*rchild;
- }BiTNode, *BiTree;
-
- int CreateBiTree(BiTree &T)
- { TElemType ch;
- cout<<"Please input data (/ for NULL node!) : ";
- cin>>ch;
- if(ch=='/') T=NULL;
- else
- { if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))
- { cout<<"Overflow!";
- return (ERROR);
- }
- T->data=ch;
- CreateBiTree(T->lchild);
- CreateBiTree(T->rchild);
- }
- return (OK);
- }
-
- int PostOrderTraverse(BiTree T)
- {
- if(T)
- { if (PostOrderTraverse(T->lchild))
- if(PostOrderTraverse(T->rchild))
- { cout<<T->data<<"->";
- return (OK);
- }
- return (ERROR);
- }
- else
- return (OK);
- }
- int CentralOrderTraverse(BiTree T)
- {
- if(T)
- { if (CentralOrderTraverse(T->lchild))
- { cout<<T->data<<"->";
- if(CentralOrderTraverse(T->rchild))
- return (OK);
- }
- return (ERROR);
- }
- else
- return (OK);
- }
- int preOrderTraverse(BiTree T)
- {
- if(T)
- { cout<<T->data<<"->";
- if (PostOrderTraverse(T->lchild))
- if(PostOrderTraverse(T->rchild))
- return OK;
- return (ERROR);
- }
- else
- return (OK);
- }
- int main()
- { BiTree T;
- cout<<endl<<endl<<"PostOrderTraverse.cpp";
- cout<<endl<<"=========================";
- cout<<endl<<endl<<"Please input data to create BiTree:"<<endl;
- CreateBiTree(T);
- std::cout<<"先序遍歷:"<<endl;
- PostOrderTraverse(T);
- std::cout<<"中序遍歷:"<<endl;
- CentralOrderTraverse(T);
- std::cout<<"後序遍歷:"<<endl;
- preOrderTraverse(T);
- cout<<"End !"<<endl<<endl<<"...OK!...";
- getch();
- return 0;
- }