本題要求根據給定的一棵二叉樹的后序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。
第一行給出正整數NN(/le 30≤30),是樹中結點的個數。隨后兩行,每行給出NN個整數,分別對應后序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。
在一行中輸出PReorder:以及該樹的先序遍歷結果。數字間有1個空格,行末不得有多余空格。
72 3 1 5 7 6 41 2 3 4 5 6 7輸出樣例:
Preorder: 4 1 3 2 6 5 7#include<iostream>#include<cstdio>#include<cstring>using namespace std;int xian[35];int k=0;//給先序計數 void houzhong(int h[],int z[],int size){ if(size<=0) return; int temp=*(h+size-1);//先序的根節點在后序的最后一個位置 xian[k++]=temp; int index=0; while(index<size) { if(*(z+index)==temp) break; index++; } houzhong(h,z,index); houzhong(h+index,z+index+1,size-index-1);}int main(){ int n; scanf("%d",&n); int hou[35]; int zhong[35]; for(int i=0;i<n;i++) scanf("%d",&hou[i]); for(int i=0;i<n;i++) scanf("%d",&zhong[i]); houzhong(hou,zhong,n); printf("Preorder:"); for(int i=0;i<n;i++) printf(" %d",xian[i]); printf("/n"); return 0;}
新聞熱點
疑難解答