sdutacm 資料結構實驗之查詢一 二叉排序樹

2021-07-27 23:33:18 字數 1579 閱讀 4842

資料結構實驗之查詢一:二叉排序樹

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個人的個人資產,以萬元為單位,個人資產數字為正整數,...