根據後序和中序遍歷輸出先序遍歷

2022-04-16 19:44:57 字數 1167 閱讀 8098

第一行給出正整數n(≤),是樹中結點的個數。隨後兩行,每行給出n個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。

在一行中輸出preorder:以及該樹的先序遍歷結果。數字間有1個空格,行末不得有多餘空格。

7

2 3 1 5 7 6 4

1 2 3 4 5 6 7

preorder: 4 1 3 2 6 5 7

這題唯一的難點就是如何根據後序和中序遍歷把樹建立起來

先模擬一下 比如後序是2 3 1 5 7 6 4 中序是1 2 3 4 5 6 7

從後序遍歷可以知道4是樹根,6是4的右孩子,然後根據中序遍歷可知1 2 3是4的左子樹,5 6 7 是右子樹 所以1是4的左孩子,這樣依次遞迴下去就可以把樹建好了;

**如下:

1 #include 2 #include 3 #include 

4 #include 5 #include 6 #include 7

using

namespace

std;

8 typedef long

long

ll;9

const

int maxn=1e5+5;10

int mid[50],post[50

];11

struct

node12;

17 node* build(int *mid,int *post,int

n)18

27 node *t=new

node;

28 t->data=*p;

29int len=p-mid;

30 t->lnode=build(mid,post,len);

31 t->rnode=build(p+1,post+len,n-len-1

);32

return

t;33}34

void preprint(node *t)

3542

return;43

}44intmain()

45

根據後序和中序遍歷輸出先序遍歷

本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。輸入格式 第一行給出正整數nn le 30 30 是樹中結點的個數。隨後兩行,每行給出nn個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。輸出格式 在一行中輸出preorder 以...

根據後序和中序遍歷輸出先序遍歷

本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。第一行給出正整數n 30 是樹中結點的個數。隨後兩行,每行給出n個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。在一行中輸出preorder 以及該樹的先序遍歷結果。數字間有1個空...

根據後序和中序遍歷輸出先序遍歷

n 是樹中結點的個數。隨後兩行,每行給出 n個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。7 2 3 1 5 7 6 4 1 2 3 4 5 6 7preorder 4 1 3 2 6 5 7 思路 一.根據後序遍歷和中序遍歷建樹 1.二叉鍊錶結構的定義 ...