先序遍歷:根左右
中序遍歷:左根右
後序遍歷:左右根
給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。
輸入格式:
輸入第一行給出乙個正整數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...