數據結構之二叉樹(一)
阿新 • • 發佈:2017-06-30
reorder system style 序列 urn creat 編寫程序 space ont
設計和編寫程序,按照輸入的遍歷要求(即先序、中序和後序)完成對二叉樹的遍歷,並輸出相應遍歷條件下的樹結點序列。
1 //遞歸實現 2 #include<iostream> 3 #include<string> 4 using namespace std; 5 6 typedef struct BiTNode{ 7 char data; 8 struct BiTNode *lchild,*rchild; 9 }BiTNode,*BiTree; 10 11 void InitBiTree(BiTree &T)//構造空二叉樹 12 { 13 T=NULL; 14 } 15 void CreateBiTree(BiTree &T)//生成二叉樹 16 { 17 char ch; 18 cin>>ch; 19 if(ch==‘0‘)//0代表空 20 T=NULL; 21 else 22 { 23 T=(BiTree)malloc(sizeof(BiTNode));//生成根結點 24 if(!T) 25 { 26 cout<<"生成結點錯誤!"<<endl; 27 return; 28 } 29 T->data=ch; 30 CreateBiTree(T->lchild); 31 CreateBiTree(T->rchild); 32 } 33 } 34 35 void PreOrder(BiTree T)//先序遞歸遍歷 36 { 37 if(T!=NULL) 38 { 39 cout<<T->data<<""; 40 PreOrder(T->lchild); 41 PreOrder(T->rchild); 42 } 43 } 44 45 void InOrder(BiTree T)//中序遞歸遍歷 46 { 47 if(T!=NULL) 48 { 49 InOrder(T->lchild); 50 cout<<T->data<<" "; 51 InOrder(T->rchild); 52 } 53 } 54 55 void PostOrder(BiTree T)//後序遞歸遍歷 56 { 57 if(T!=NULL) 58 { 59 PostOrder(T->lchild); 60 PostOrder(T->rchild); 61 cout<<T->data<<" "; 62 } 63 } 64 int main() 65 { 66 BiTree T; 67 InitBiTree(T); 68 cout<<"請輸入二叉樹結點"<<endl; 69 CreateBiTree(T); 70 string str=""; 71 cout<<"請輸入遍歷要求(先序,中序,後序)"; 72 cin>>str; 73 if(str=="先序") 74 { 75 cout<<endl<<"先序遞歸遍歷樹"<<endl; 76 PreOrder(T); 77 } 78 else if(str=="中序") 79 { 80 cout<<endl<<"中序遞歸遍歷樹"<<endl; 81 InOrder(T); 82 } 83 else if(str=="後序") 84 { 85 cout<<endl<<"後序遞歸遍歷樹"<<endl; 86 PostOrder(T); 87 } 88 cout<<endl; 89 system("pause"); 90 return 0; 91 }
數據結構之二叉樹(一)