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

2021-10-11 14:34:54 字數 1414 閱讀 7137

對應給定的乙個序列可以唯一確定一棵二叉排序樹。然而,一棵給定的二叉排序樹卻可以由多種不同的序列得到。例如分別按照序列和插入初始為空的二叉排序樹,都得到一樣的結果。你的任務書對於輸入的各種序列,判斷它們是否能生成一樣的二叉排序樹。

輸入包含若干組測試資料。每組資料的第1行給出兩個正整數n (n < = 10)和l,分別是輸入序列的元素個數和需要比較的序列個數。第2行給出n個以空格分隔的正整數,作為初始插入序列生成一顆二叉排序樹。隨後l行,每行給出n個元素,屬於l個需要檢查的序列。

簡單起見,我們保證每個插入序列都是1到n的乙個排列。當讀到n為0時,標誌輸入結束,這組資料不要處理。

對每一組需要檢查的序列,如果其生成的二叉排序樹跟初始序列生成的二叉排序樹一樣,則輸出"yes",否則輸出"no"。

input

4 2

3 1 4 2

3 4 1 2

3 2 4 1

2 12 1

1 20

output
yes

nono

#include

#include

typedef

struct tree

tree;

int f;

//標記變數 f = 1時匹配

tree *

creat

(tree *tre,

int k)

;//建立二叉查詢樹

void

judge

(tree *tre1, tree *tre2)

;//比較函式

intmain()

for(j =

0; j < l; j++

) f =1;

//重置f

judge

(tre1, tre2)

;//比較

if(f ==1)

printf

("yes\n");

else

printf

("no\n");

}}return0;

}tree *

creat

(tree *tre,

int k)

else

}return tre;

}void

judge

(tree *tre1, tree *tre2)

elseif(

(tre1 &&

!tre2)||(

!tre1 && tre2)

)//只有乙個為空,匹配不成功

else

if(tre1->date == tre2->date)

//根節點相同,看左右子樹

else

//其他全為失敗

}

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

description 對應給定的乙個序列可以唯一確定一棵二叉排序樹。然而,一棵給定的二叉排序樹卻可以由多種不同的序列得到。例如分別按照序列和插入初始為空的二叉排序樹,都得到一樣的結果。你的任務書對於輸入的各種序列,判斷它們是否能生成一樣的二叉排序樹。input 輸入包含若干組測試資料。每組資料的第...

資料結構上機實驗之順序查詢

time limit 1000ms memory limit 65536k 在乙個的序列裡,查詢元素是否存在,若存在輸出yes,不存在輸出no.本題多組資料,首先輸入乙個數字n,然後輸入n n 1000 個數,然後再輸入乙個查詢數字。若存在輸出yes,不存在輸出no.4 1 3 5 8 3 yes ...

資料結構上機實驗之順序查詢

time limit 1000ms memory limit 65536k 在乙個的序列裡,查詢元素是否存在,若存在輸出yes,不存在輸出no.本題多組資料,首先輸入乙個數字n,然後輸入n n 1000 個數,然後再輸入乙個查詢數字。若存在輸出yes,不存在輸出no.4 1 3 5 8 3 yes ...