做這道題首先知道二叉樹搜尋樹的定義是關鍵! ! !
注意: 二叉樹和二叉搜尋樹(bst)的概念是不同的,二叉搜尋樹是一種特殊的二叉樹。它符合規律
一開始沒有搞明白兩者的區別,以為二叉搜尋樹就是二叉樹,這讓我在構造二叉樹的時候產生了疑惑,因為根據資料結構書上的描述,二叉樹可以根據前序、中序、後序序列構造,這樣產生的結果就是不唯一的。最後還是查詢了一下二叉搜尋樹的概念才明白過來。根據它的規則就可以根據乙個序列構成乙個唯一的二叉搜尋樹了!而同乙個二叉搜尋樹卻可以有不同的序列來描述。這就產生了這道題的題意
:給你兩個不同的序列判斷是否能構造出同乙個二叉搜尋樹。
思路:那麼我們就可以根據二叉搜尋樹的生成規則先將一開始給你的序列生成乙個二叉搜尋樹用tree儲存起來,然後輸入n個序列,每乙個序列都生成乙個二叉
判斷兩序列是否為同一二叉搜尋樹序列
input
開始乙個數n,(1<=n<=20) 表示有n個需要判斷,n= 0 的時候輸入結束。
接下去一行是乙個序列,序列長度小於10,包含(0~9)的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。
接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這兩個序列是否能組成同一顆二叉搜尋樹。
output
如果序列相同則輸出yes,否則輸出no
sample input
2567432
543267
576342
0
sample output
yesno
#include#includeint main()
tree[j]=num;
}while(n--)
tree1[j]=num;
}int i;
for(i=0;i<=1024&&tree[i]==tree1[i];i++);//比較是否相等
if(i>1024)
printf("yes\n");
else
printf("no\n");}}
return 0;
}
搜尋樹建立乙個臨時陣列tree2儲存,比較兩個陣列是否相同,相同輸出「yes」,不同輸出「no」。
hdu3791二叉搜尋樹
hdu3791二叉搜尋樹 又是二叉搜尋樹的前序遍歷。1.建樹會順序影響整棵樹的形狀 2.記得釋放資源 3.可以用雙重指標和引用優化程式。某些printf 是之前設定的斷點,可以無視之 includeusing namespace std struct bst root bst insert bst ...
hdu 3791 二叉搜尋樹
problem description 判斷兩序列是否為同一二叉搜尋樹序列 input 開始乙個數n,1 n 20 表示有n個需要判斷,n 0 的時候輸入結束。接下去一行是乙個序列,序列長度小於10,包含 0 9 的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。接下去的n行有n個序列,每...
HDU 3791 二叉搜尋樹
problem description 判斷兩序列是否為同一二叉搜尋樹序列 input 開始乙個數n,1 n 20 表示有n個需要判斷,n 0 的時候輸入結束。接下去一行是乙個序列,序列長度小於10,包含 0 9 的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。接下去的n行有n個序列,每...