nyoj 756 重建二叉樹

2022-09-03 15:15:11 字數 1558 閱讀 2927

時間限制: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 重建二叉...