BiTree:
#include<iostream> using namespace std; struct BiTNode { char data; BiTNode *lchild, *rchild; }*T; //BiTNode *T; //先序递归创建二叉树 void CreatBiTree(BiTNode* &T) { char ch; if((ch=getchar()) =='#') T = NULL; else { T = new BiTNode; T->data = ch; CreatBiTree(T->lchild); CreatBiTree(T->rchild); } } //先序递归遍历二叉树 void PreOrderTraverse(BiTNode* &T) { if(T==NULL) return; else { cout<< T->data; PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } } //中序递归遍历二叉树 void InOrderTraverse(BiTNode* &T) { if(T==NULL) return; else { InOrderTraverse(T->lchild); cout<< T->data; InOrderTraverse(T->rchild); } } //后续递归遍历二叉树 void PosOrderTraverse(BiTNode* &T) { if(T==NULL) return; else { PosOrderTraverse(T->lchild); PosOrderTraverse(T->rchild); cout<< T->data; } } //清空树 void DeleteTree(BiTNode* &T) { if(T!=NULL) { DeleteTree(T->lchild); DeleteTree(T->rchild); delete T; } } int main() { cout<<"创建一棵树,其中A->Z字符代表树的数据,用‘#’表示空树:"<<endl; CreatBiTree(T); cout<<"先序递归遍历:"; PreOrderTraverse(T); cout<<endl; cout<<"中序递归遍历:"; InOrderTraverse(T); cout<<endl; cout<<"后序递归遍历:"; PosOrderTraverse(T); cout<<endl; /*cout<<"清空树后:"; DeleteTree(T); cout<<"先序递归遍历:"; PreOrderTraverse(T); cout<<endl;*/ return 0; }