藍橋杯——FBI樹
阿新 • • 發佈:2018-12-02
環境CodeBlocks17 OJ系統通過
// @CGQ 2018/11/22 時間緊迫沒怎麼寫註釋 #include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> using namespace std; #define ElemType char #define MAX 1025 #define Status int typedef struct BiTNode { ElemType data; struct BiTNode *lchild, *rchild; }BiTNode, *BiTree; char Judge(char *str) { if(str[0]=='\0') return '#'; int b,f,i; b=f=i=0; for(int i=0;str[i+1]!='\0';i++) { if(str[i]==str[i+1]) ; else {f=1;break;} } if(f==1) return 'F'; else if(str[0]=='0') return 'B'; else return 'I'; } void PostOrderTraverse(BiTree T) { if(T) { PostOrderTraverse(T->lchild); PostOrderTraverse(T->rchild); cout<<T->data; } } void CreateBiTree(BiTree &T, char * str) {// 建立二叉樹 char ch = Judge(str); if(ch == '#') T = NULL; else { char s1[1025],s2[1025]; int i,j; if(strlen(str)>1) { for(i=0;i<int(strlen(str)/2);i++) s1[i]=str[i]; s1[i]='\0'; for(j=0;i<=strlen(str);j++,i++) s2[j]=str[i]; s2[j]='\0'; } else if(strlen(str)==1) { s1[0]=s2[0]='\0'; } T = new BiTNode; T->data = ch; CreateBiTree(T->lchild,s1); CreateBiTree(T->rchild,s2); } } int main() { char a[MAX]; int n; BiTree T; cin>>n; scanf("%s",a); CreateBiTree(T,a); PostOrderTraverse(T); return 0; } /* 輸入 3 10001011 輸出 IBFBBBFIBFIIIFF */