求先序遍歷

2021-06-19 05:24:25 字數 1786 閱讀 2154

**如下:

#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 輸...