**如下:
#include struct treenode
;treenode* binarytreefromorderings(char* inorder, char* aftorder, int length)
treenode* node = new treenode; //新建乙個樹節點
node->elem = *(aftorder+length-1);
printf("%c ",node->elem);
int rootindex = 0;
for(;rootindex < length; rootindex++) //找這個根節點
node->left = binarytreefromorderings(inorder, aftorder , rootindex);
node->right = binarytreefromorderings(inorder + rootindex + 1, aftorder + rootindex , length - (rootindex + 1));
return node;
}int main()
暫時無法判斷非法輸入的**:
#include #include #include #define maxn 5005
using namespace std;
char in[maxn]; //中序
char af[maxn]; //後序
char ans[maxn]; //最後輸出的前序序列
int count=0;
struct treenode
;treenode* bintree(char* inorder, char* aftorder, int length)
treenode* node = new treenode; //新建乙個樹節點
node->elem = *(aftorder+length-1);
ans[count++]=node->elem; //存入答案
int rootindex = 0;
for( ;rootindexleft = bintree(inorder,aftorder,rootindex);
node->right = bintree(inorder+rootindex+1 , aftorder+rootindex , length-(rootindex+1));
return node;
}int main()
;treenode* bintree(int inorder, int aftorder, int length)
treenode* node = new treenode; //新建乙個樹節點
node->elem = *(aftorder+length-1);
ans[count++]=node->elem; //存入答案
int rootindex=0;
for( ;rootindex=length)
node->left = bintree(inorder,aftorder,rootindex);
node->right = bintree(inorder+rootindex+1 , aftorder+rootindex , length-(rootindex+1));
return node;
}int main()
{ int n;
scanf("%d",&n);
int i;
for(i=0;i
求先序遍歷與後序遍歷
問題描述 給出一棵二叉樹的中序與後序排列。求出它的先序排列。約定樹結點用不同的大寫字母 表示,長度 8 輸入格式 兩行,每行乙個字串,分別表示中序和後序排列 輸出格式 乙個字串,表示所求先序排列 樣例輸入 badc bdca 樣例輸出 abcd 求後序遍歷與後序遍歷 include include ...
樹論 求先序遍歷
原題傳送門 給出一棵二叉樹的中序與後序排列。求出它的先序排列。約定樹結點用不同的大寫字母表示 輸入格式 2行,均為大寫字母組成的字串,表示一棵二叉樹的中序與後序排列。輸出格式 1行,表示一棵二叉樹的先序。首先,一點基本常識,給你乙個後序遍歷,那麼最後乙個就是根 如abcd,則根為d 因為題目求先序,...
求二叉樹的先序遍歷(中序 後序 先序)
problem description 已知一棵二叉樹的中序遍歷和後序遍歷,求二叉樹的先序遍歷 input 輸入資料有多組,第一行是乙個整數t t 1000 代表有t組測試資料。每組包括兩個長度小於50 的字串,第乙個字串表示二叉樹的中序遍歷序列,第二個字串表示二叉樹的後序遍歷序列。output 輸...