本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。
輸入格式:
第一行給出正整數n(≤30),是樹中結點的個數。隨後兩行,每行給出n個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。
輸出格式:
在一行中輸出preorder:以及該樹的先序遍歷結果。數字間有1個空格,行末不得有多餘空格。
輸入樣例:
72 3 1 5 7 6 4
1 2 3 4 5 6 7
輸出樣例:
preorder: 4 1 3 2 6 5 7
手動模擬了一遍,但是還不是很理解建樹的原理
順便複習了結構體的內嵌,附鏈結
#include
#define pb push_back
#define mem(a,b) memset(a,b,szieof a)
using
namespace std;
typedef
long
long ll;
const
int inf=
0x3f3f3f3f
;int in[37]
,post[37]
;//中序,後序
typedef
struct bitnode//結構體標籤
bitnode,
*bitree;
//bitnode:定義時不用加struct,指標
/* 第乙個引數是中序序列的起始位置,
第二個引數是後序序列的起始位置,
n是長度
*/bitree build
(int
*in,
int*post,
int n)
bitree t=
new bitnode;
/* bitree t;
t = (bitnode*)malloc(sizeof(bitnode));
等價 */
t->data=
*p;int len=p-in;
t->lc=
build
(in,post,len)
;//找到左子樹根節點,遞迴
t->rc=
build
(p+1
,post+len,n-len-1)
;return t;
}void
preorder
(bitree t)
//先序輸出
return;}
intmain()
7 1 根據後序和中序遍歷輸出先序遍歷(25 分)
題目鏈結 本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。第一行給出正整數 n 是樹中結點的個數。隨後兩行,每行給出 n個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。在一行中輸出preorder 以及該樹的先序遍歷結果。數字間...
7 3 根據後序和中序遍歷輸出先序遍歷 25分
本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。輸入格式 第一行給出正整數n 30 是樹中結點的個數。隨後兩行,每行給出n個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。輸出格式 在一行中輸出preorder 以及該樹的先序遍歷...
7 8 根據後序和中序遍歷輸出先序遍歷 20分
輸入格式 第一行給出正整數n 30 是樹中結點的個數。隨後兩行,每行給出n個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。輸出格式 在一行中輸出preorder 以及該樹的先序遍歷結果。數字間有1個空格,行末不得有多餘空格。輸入樣例 7 2 3 1 5 7 ...