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