資料結構實驗之查詢一:二叉排序樹
timelimit: 400ms memory limit: 65536kb
submit
statistic
problem description
對應給定的乙個序列可以唯一確定一棵二叉排序樹。然而,一棵給定的二叉排序樹卻可以由多種不同的序列得到。例如分別按照序列
和插入初始為空的二叉排序樹,都得到一樣的結果。你的任務書對於輸入的各種序列,判斷它們是否能生成一樣的二叉排序樹。
input
輸入包含若干組測試資料。每組資料的第
1行給出兩個正整數
n (n <= 10)和l
,分別是輸入序列的元素個數和需要比較的序列個數。第
2行給出
n個以空格分隔的正整數,作為初始插入序列生成一顆二叉排序樹。隨後
l行,每行給出
n個元素,屬於
l個需要檢查的序列。
簡單起見,我們保證每個插入序列都是1到
n的乙個排列。當讀到n為
0時,標誌輸入結束,這組資料不要處理。
output
對每一組需要檢查的序列,如果其生成的二叉排序樹跟初始序列生成的二叉排序樹一樣,則輸出
"yes"
,否則輸出
"no"。
example input
4 23 1 4 2
3 4 1 2
3 2 4 1
2 12 1
1 2 0
example output
yesno
nohint
author
xam
#include#include#include#include#include#include#includeusing namespace std;
typedef struct node
tree;
char c[1002],d[1002],cc[1002];
int k,kk,kkk;
void insert(tree*&root,int x)
else if(xdata)
else
}tree* build(tree*root,int a,int o)
return root;
}int top;//控制空格輸出
void inout(tree*root)
}void firstout(tree*root)
}void lastout(tree*root)
}void firstout2(tree*root)
}void qiangge(tree*root,tree* root2)
}else if(root&&!root2||!root&&root2)top = 0;
}int main()
{ int n,o,oo,l;
while(~scanf("%d",&n))
{if(n==0)
break;
scanf("%d",&l);
//top = 1;
int a[1002],b[1002],i;
for(i=0;i
SDUTACM 資料結構實驗之查詢七 線性之雜湊表
根據給定的一系列整數關鍵字和素數p,用除留餘數法定義hash函式h key key p,將關鍵字對映到長度為p的雜湊表中,用線性探測法解決衝突。重複關鍵字放在hash表中的同一位置。連續輸入多組資料,每組輸入資料第一行為兩個正整數n n 1000 和p p n的最小素數 n是關鍵字總數,p是hash...
SDUTACM 資料結構實驗之查詢五 平方之雜湊表
給定的一組無重複資料的正整數,根據給定的雜湊函式建立其對應hash表,雜湊函式是h key key p,p是雜湊表表長,p是素數,處理衝突的方法採用平方探測方法,增量di i 2,i 1,2,3,m 1 輸入一組測試資料,資料的第1行給出兩個正整數n n 500 和p p 2n的最小素數 n是要插入...
SDUTACM 資料結構實驗之排序四 尋找大富翁
2015胡潤全球財富榜調查顯示,個人資產在1000萬以上的高淨值人群達到200萬人,假設給出n個人的個人資產值,請你快速找出排前m位的大富翁。首先輸入兩個正整數n n 10 6 和m m 10 其中n為總人數,m為需要找出的大富翁數目,接下來給出n個人的個人資產,以萬元為單位,個人資產數字為正整數,...