時間限制:1000 ms | 記憶體限制:65535 kb
難度:3
描述
題目很簡單,給你一棵二叉樹的後序和中序序列,求出它的前序序列(so easy!)。
輸入
輸入有多組資料(少於100組),以檔案結尾結束。
每組資料僅一行,包括兩個字串,中間用空格隔開,分別表示二叉樹的後序和中序序列(字串長度小於26,輸入資料保證合法)。
輸出
每組輸出資料單獨佔一行,輸出對應得先序序列。
樣例輸入
acbfged abcdefg
cdab cbad
樣例輸出
dbacegf
bcad
#include #include #include //二叉鍊錶typedef struct nodebinode,*btree;
//利用後序和中序建立二叉樹
void getpreorder(char *last,char *mid,btree &t,int len)
//取出後序序列中的最後乙個節點
char ch=last[len-1];
int index=0;
//在中序序列中進行查詢根節點,並用index記錄其在序列中的索引
while(mid[index]!=ch)
//給根節點分配空間
t=(btree)malloc(sizeof(binode));
t->data=mid[index];
//建立左子樹
getpreorder(last,mid,t->lchild,index);
//建立右子樹
getpreorder(last+index,mid+index+1,t->rchild,len-index-1);
}void getpostorder(char *prim,char *mid,btree &t,int len)
//提出先序序列中的第乙個節點
char ch=prim[0];
int index=0;
//在中序序列中查詢當前根節點,並用index記錄其在序列中的位置
while(mid[index]!=ch)
//給根節點分配空間
t=(btree)malloc(sizeof(binode));
t->data=mid[index];
//建立左子樹
getpostorder(prim+1,mid,t->lchild,index);
//建立右子樹
getpostorder(prim+index+1,mid+index+1,t->rchild,len-index-1);
}//先序輸出二叉樹
void preorder(btree t)
}//後序輸出二叉樹
void postorder(btree t)
}int main()
return 0;
}
nyoj756 重建二叉樹
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 題目很簡單,給你一棵二叉樹的後序和中序序列,求出它的前序序列 so easy 輸入輸入有多組資料 少於100組 以檔案結尾結束。每組資料僅一行,包括兩個字串,中間用空格隔開,分別表示二叉樹的後序和中序序列 字串長度小於26,輸入...
NYOJ 題目756 重建二叉樹
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 題目很簡單,給你一棵二叉樹的後序和中序序列,求出它的前序序列 so easy 輸入輸入有多組資料 少於100組 以檔案結尾結束。每組資料僅一行,包括兩個字串,中間用空格隔開,分別表示二叉樹的後序和中序序列 字串長度小於26,輸入...
nyoj221 nyoj756 重建二叉樹
nyoj221題目鏈結 已知二叉樹前序中序遍歷求二叉樹後序遍歷 已知二叉樹前序中序遍歷可重建二叉樹,進而遍歷後序。include include include struct node node rebuildtree char preorder,char midorder,int len 重建二叉...