36 題目1009 二叉搜尋樹

2021-07-10 07:04:13 字數 898 閱讀 8815

題目描述:判斷兩序列是否為同一二叉搜尋樹序列

輸入:開始乙個數n,(1<=n<=20) 表示有n個需要判斷,n= 0 的時候輸入結束。

接下去一行是乙個序列,序列長度小於10,包含(0~9)的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。

接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這兩個序列是否能組成同一顆二叉搜尋樹。

輸出:如果序列相同則輸出yes,否則輸出no

樣例輸入:

2

567432

543267

576342

0

樣例輸出:

yes

no

用建立二叉排序樹的方法不知道怎麼輸出前序後序,沒法比較;

用靜態陣列的方法,最大的陣列長度有1023,太稀疏了,比如將還每次都要從0開始比較,時間複雜度太高。。。

但是我看到的大神的靜態陣列的做法,演算法和我相同,但是優化了靜態陣列的比較方式,雖然時間複雜度還是比較高。。。。

#include#include#include#include#includeusing namespace std;

void creatbitree(string str, int a)

else if (a[j] < temp) //存到右子樹

j = 2 * j + 1;

else

j = 2 * j;

} }}

int main()

} system("pause");

return 0;

}

題目1009 二叉搜尋樹

題目1009 二叉搜尋樹 時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 7634 解決 3374 題目描述 判斷兩序列是否為同一二叉搜尋樹序列 輸入 開始乙個數n,1 n 20 表示有n個需要判斷,n 0 的時候輸入結束。接下去一行是乙個序列,序列長度小於10,包含 0 9 的數字,沒...

題目1009 二叉搜尋樹

輸入乙個整數n,再給你乙個序列s讓你生成乙個二叉排序樹,接下來輸入n個序列,判斷這n個序列生成的二叉排序樹是否和序列s生成的二叉排序樹相同。這道題的思路是這樣,我們首先應該根據給定序列建乙個二叉排序樹,判斷兩顆樹相同的條件是它們的前序序列和中序序列 後序序列和中序序列相等。下面是此題的 includ...

3 6二叉搜尋樹

分別存放兩比較輸入的先序 中序序列 int size1,size2 存放字串長 char str 指向正在輸入的字串 int size 計算正在輸入字串長 str,size與str1 str2,size1 size2對應 int loc node creat 遞迴先序遍歷 void preorder...