PTA天梯賽樹的複習

2021-10-18 13:24:17 字數 4293 閱讀 7238

先序遍歷:根左右

中序遍歷:左根右

後序遍歷:左右根

給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。

輸入格式:

輸入第一行給出乙個正整數n(≤30),是二叉樹中結點的個數。第二行給出其後序遍歷序列。第三行給出其中序遍歷序列。數字間以空格分隔。

輸出格式:

在一行中輸出該樹的層序遍歷的序列。數字間以1個空格分隔,行首尾不得有多餘空格。

輸入樣例:

7

2 3 1 5 7 6 4

1 2 3 4 5 6 7

輸出樣例:

4 1 6 3 5 7 2
#

include

#include

#include

#include

using

namespace std;

const

int n=40;

struct

node

tree[n]

;int n,behind[n]

,mid[n]

;int

build

(int behindl,

int behindr,

int midl,

int midr)

//後序遍歷子樹的左邊界,後序遍歷子樹的右邊界,中序遍歷子樹的左邊界,中序遍歷子樹的右邊界

void

bfs(

int rt)

for(

int i=

0;i++i)

printf

("%d "

,vec[i]);

printf

("%d\n"

,vec.

back()

);}int

main()

return0;

}

給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。

輸入格式:

輸入第一行給出乙個正整數n(≤30),是二叉樹中結點的個數。第二行給出其中序遍歷序列。第三行給出其前序遍歷序列。數字間以空格分隔。

輸出格式:

在一行中輸出該樹反轉後的層序遍歷的序列。數字間以1個空格分隔,行首尾不得有多餘空格。

輸入樣例:

7

1 2 3 4 5 6 7

4 1 3 2 6 5 7

輸出樣例:

4 6 1 7 5 3 2
#

include

#include

#include

#include

using

namespace std;

const

int n=40;

struct

node

tree[n]

;int n,pre[n]

,mid[n]

;int

build

(int prel,

int prer,

int midl,

int midr)

//前序遍歷子樹的左邊界,前序遍歷子樹的右邊界,中序遍歷子樹的左邊界,中序遍歷子樹的右邊界

void

bfs(

int rt)

for(

int i=

0;i++i)

printf

("%d "

,vec[i]);

printf

("%d\n"

,vec.

back()

);}int

main()

return0;

}

乙個二叉樹,如果每乙個層的結點數都達到最大值,則這個二叉樹就是完美二叉樹。對於深度為 d 的,有 n 個結點的二叉樹,若其結點對應於相同深度完美二叉樹的層序遍歷的前 n 個結點,這樣的樹就是完全二叉樹。

給定一棵完全二叉樹的後序遍歷,請你給出這棵樹的層序遍歷結果。

輸入格式:

輸入在第一行中給出正整數 n(≤30),即樹中結點個數。第二行給出後序遍歷序列,為 n 個不超過 100 的正整數。同一行中所有數字都以空格分隔。

輸出格式:

在一行中輸出該樹的層序遍歷序列。所有數字都以 1 個空格分隔,行首尾不得有多餘空格。

輸入樣例:

8

91 71 2 34 10 15 55 18

輸出樣例:

18 34 55 71 2 10 15 91
#

include

#include

using

namespace std;

const

int n=40;

int n,len,behind[n]

,ans[n]

;void

build

(int x)

intmain()

return0;

}

將一系列給定數字順序插入乙個初始為空的二叉搜尋樹(定義為左子樹鍵值大,右子樹鍵值小),你需要判斷最後的樹是否一棵完全二叉樹,並且給出其層序遍歷的結果。

輸入格式:

輸入第一行給出乙個不超過20的正整數n;第二行給出n個互不相同的正整數,其間以空格分隔。

輸出格式:

將輸入的n個正整數順序插入乙個初始為空的二叉搜尋樹。在第一行中輸出結果樹的層序遍歷結果,數字間以1個空格分隔,行的首尾不得有多餘空格。第二行輸出yes,如果該樹是完全二叉樹;否則輸出no。

輸入樣例1:

9

38 45 42 24 58 30 67 12 51

輸出樣例1:

38 45 24 58 42 30 12 67 51

yes

輸入樣例2:

8

38 24 12 45 58 67 42 51

輸出樣例2:

38 45 24 58 42 12 67 51

no

#

include

#include

#include

#include

using

namespace std;

struct

node

tree[30]

;int idx,max;

vector<

int>v;

void

insert

(int

&rt,

int x,

int sum)

if(x>tree[rt]

.x)insert

(tree[rt]

.l,x,sum*2)

;else

insert

(tree[rt]

.r,x,sum*2+

1);}

void

bfs(

int rt)

}int

main()

bfs(rt)

;for

(int i=

0;i++i)

printf

("%d "

,v[i]);

printf

("%d\n"

,v.back()

);if(max==n)

puts

("yes");

else

puts

("no");

return0;

}

天梯賽座位分配PTA

天梯賽每年有大量參賽隊員,要保證同一所學校的所有隊員都不能相鄰,分配座位就成為一件比較麻煩的事情。為此我們制定如下策略 假設某賽場有 n 所學校參賽,第 i 所學校有 m i 支隊伍,每隊 10 位參賽選手。令每校選手排成一列縱隊,第 i 1 隊的選手排在第 i 隊選手之後。從第 1 所學校開始,各...

PTA 天梯賽座位分配 天梯賽真題集

題目要求 天梯賽每年有大量參賽隊員,要保證同一所學校的所有隊員都不能相鄰,分配座位就成為一件比較麻煩的事情。為此我們制定如下策略 假設某賽場有 n 所學校參賽,第 i 所學校有 m i 支隊伍,每隊 10 位參賽選手。令每校選手排成一列縱隊,第 i 1 隊的選手排在第 i 隊選手之後。從第 1 所學...

ACM 天梯賽賽前複習

寒假集訓被學校巨佬們震撼 苦心刷題,終於有空在天梯賽前把板題湊合整理一下,賽前來波自我安慰 hdu 2199 wa了兩次,第二次再做時沒有審清題,題目鎖定了答案在0到100之間,其餘的輸出為no solution!然而預設只有小於零才輸出。還有注意資料型別 double ac include inc...