輸入乙個整數n,再給你乙個序列s讓你生成乙個二叉排序樹,接下來輸入n個序列,判斷這n個序列生成的二叉排序樹是否和序列s生成的二叉排序樹相同。
這道題的思路是這樣,我們首先應該根據給定序列建乙個二叉排序樹,判斷兩顆樹相同的條件是它們的前序序列和中序序列/後序序列和中序序列相等。
下面是此題的**:
#include #include using namespace std;
struct node
;string store_pre[21]; //設著全域性變數來儲存前序和中序遍歷的結果
string store_in[21];
void preorder(node *t,int i) //前序遍歷
if (t -> rchild != null)
}void inorder(node *t,int i) //中序遍歷
store_in[i] += t->c;
if (t -> rchild != null)
}node tree[200]; //結構體陣列,用來存放結點
int local; //全域性變數,用來記錄當前已申請的結點數
node* creat() //用來申請結點空間
node* insert(node *t,char x) //將輸入的數字插入二叉排序樹
else if (x < t->c)
else if (x > t->c)
return t;
}int main()
for (int i = 0;i <=n;i++) //輸入
for (int i = 0;i <= n;i++) //對每個輸入字串建樹後,進行前序和中序遍歷
preorder(t,i);
inorder(t,i);
}store_pre[0] += store_in[0];
for (int i = 1;i <=n;i++) //遍歷結果與給定的字串的遍歷結果進行比較
else}}
return 0;
}
題目1009 二叉搜尋樹
題目1009 二叉搜尋樹 時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 7634 解決 3374 題目描述 判斷兩序列是否為同一二叉搜尋樹序列 輸入 開始乙個數n,1 n 20 表示有n個需要判斷,n 0 的時候輸入結束。接下去一行是乙個序列,序列長度小於10,包含 0 9 的數字,沒...
36 題目1009 二叉搜尋樹
題目描述 判斷兩序列是否為同一二叉搜尋樹序列 輸入 開始乙個數n,1 n 20 表示有n個需要判斷,n 0 的時候輸入結束。接下去一行是乙個序列,序列長度小於10,包含 0 9 的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這...
九度OJ 題目1009 二叉搜尋樹
題目描述 判斷兩序列是否為同一二叉搜尋樹序列 輸入 開始乙個數n,1 n 20 表示有n個需要判斷,n 0 的時候輸入結束。接下去一行是乙個序列,序列長度小於10,包含 0 9 的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這...