判斷兩序列是否為同一二叉搜尋樹序列
開始乙個數n,(1<=n<=20) 表示有n個需要判斷,n= 0 的時候輸入結束。
接下去一行是乙個序列,序列長度小於10,包含(0~9)的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。
接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這兩個序列是否能組成同一顆二叉搜尋樹。
如果序列相同則輸出yes,否則輸出no
2567432
543267
576342
0
yes根據二叉搜尋樹的生成規則先將一開始的序列生成乙個二叉搜尋樹用ss儲存起來,no
然後輸入n個序列,
每乙個序列都生成乙個二叉搜尋樹建立乙個臨時陣列儲存,比較兩個陣列是否相同,
相同輸出「yes」,不同輸出「no」。
#include#include#include#include#includeusing namespace std;
mapm,h;
mapw,q;
int s[15],c[15],n,l,b;
char ss[15],cc[15];
int dfs1(string t)
if(w[t]>b)
if(dfs1(t+'0'))
return 1;
if(w[t]b)
if(dfs2(t+'0'))
return 1;
if(q[t]if(dfs2(t+'1'))
return 1;
}int main()
sort(s,s+l);
for(int i=0; iint flag=0;
sort(c,c+l);
for(int j=0; jif(s[j]!=c[j]||m[s[j]]!=h[c[j]])
flag=1;
if(flag)
printf("no\n");
else
printf("yes\n");}}
return 0;
}
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個序列,每...