7 7 根據後序和中序遍歷輸出先序遍歷 25分

2021-10-02 14:27:48 字數 1318 閱讀 1172

本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。

輸入格式:

第一行給出正整數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 ...