首页 > 代码库 > 二叉树
二叉树
1 #include <iostream> 2 using namespace std; 3 #define SIZE 9 4 5 char data[SIZE+1]={‘0‘}; 6 char pre[SIZE]={‘A‘,‘B‘,‘D‘,‘H‘,‘I‘,‘E‘,‘C‘,‘F‘,‘G‘}; 7 char mid[SIZE]={‘H‘,‘D‘,‘I‘,‘B‘,‘E‘,‘A‘,‘F‘,‘C‘,‘G‘}; 8 void preOrder(int N); 9 void midOrder(int N); 10 void backOrder(int N); 11 void seek(int l,int r,int n,int R); 12 int main() 13 { 14 15 seek(0,0,SIZE,1); 16 for(int i=1;i<=SIZE;i++) 17 { 18 cout <<data[i]; 19 } 20 cout <<endl; 21 backOrder(1); 22 return 0; 23 } 24 25 void seek(int l,int r,int n,int R) 26 { 27 int i; 28 int root=0; 29 i=r; 30 31 if(n<=0) 32 return; 33 data[R]=pre[l]; 34 while(mid[i]!=pre[l]) 35 { 36 i++; 37 root++; 38 } 39 40 seek(l+1,r,root,2*R); 41 seek(l+root+1,r+root+1,n-root-1,2*R+1); 42 } 43 44 45 46 47 48 void preOrder(int N) 49 { 50 if(2*N>=SIZE+1) 51 { 52 cout << data[N]; 53 return; 54 } 55 cout <<data[N]; 56 preOrder(N*2); 57 if(2*N+1>=SIZE+1) 58 { 59 return; 60 } 61 preOrder(N*2+1); 62 } 63 void midOrder(int N) 64 { 65 if(2*N>=SIZE+1) 66 { 67 cout << data[N]; 68 return; 69 } 70 midOrder(N*2); 71 cout << data[N]; 72 if(2*N+1>=SIZE+1) 73 { 74 return; 75 } 76 midOrder(N*2+1); 77 } 78 void backOrder(int N) 79 { 80 if(2*N>=SIZE+1) 81 { 82 cout << data[N]; 83 return; 84 } 85 backOrder(N*2); 86 if(2*N+1>=SIZE+1) 87 { 88 cout << data[N]; 89 return; 90 } 91 backOrder(N*2+1); 92 cout << data[N]; 93 }
二叉树
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。