給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。例如分別按照序列和插入初始為空的二叉搜尋樹,都得到一樣的結果。於是對於輸入的各種插入序列,你需要判斷它們是否能生成一樣的二叉搜尋樹。
輸入包含若干組測試資料。每組資料的第1行給出兩個正整數n (≤10)和l,分別是每個序列插入元素的個數和需要檢查的序列個數。第2行給出n個以空格分隔的正整數,作為初始插入序列。最後l行,每行給出n個插入的元素,屬於l個需要檢查的序列。
簡單起見,我們保證每個插入序列都是1到n的乙個排列。當讀到n為0時,標誌輸入結束,這組資料不要處理。
對每一組需要檢查的序列,如果其生成的二叉搜尋樹跟對應的初始序列生成的一樣,輸出「yes」,否則輸出「no」。
423
1423
4123
2412
1211
20
yes
nono
#include
using
namespace std;
// 結點的定義
typedef
struct node tree,
* treenode;
// 向搜尋二叉樹中插入資料
void
creattree
(treenode& root,
int data)
else
else}}
// 闖將搜尋二叉樹
void
bulidtree
(treenode& root,
int n)
}// 判斷是否是同一棵樹
bool
judge
(treenode root, treenode test)
intmain()
free
(test)
;// 每次判斷結束釋放檢測二叉樹的根結點
if(flag ==1)
else
} cin >> n;
free
(root)
;// 每組資料測試完之後釋放比較二叉樹的根結點。
}return0;
}
資料結構基礎 是否同一棵二叉搜尋樹
輸入包含若干組測試資料。每組資料的第1行給出兩個正整數n 10 和 l,分別是每個序列插入元素的個數和需要檢查的序列個數。第2行給出 n個以空格分隔的正整數,作為初始插入序列。最後 l行,每行給出 n個插入的元素,屬於 l個需要檢查的序列。簡單起見,我們保證每個插入序列都是1到 n的乙個排列。當讀到...
資料結構 判斷是否同一棵二叉搜尋樹
給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。例如分別按照序列和插入初始為空的二叉搜尋樹,都得到一樣的結果。於是對於輸入的各種插入序列,你需要判斷它們是否能生成一樣的二叉搜尋樹。輸入包含若干組測試資料。每組資料的第1行給出兩個正整數n 10 ...
pta7 4 是否同一棵二叉搜尋樹
題目 給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。例如分別按照序列和插入初始為空的二叉搜尋樹,都得到一樣的結果。於是對於輸入的各種插入序列,你需要判斷它們是否能生成一樣的二叉搜尋樹。輸入格式 輸入包含若干組測試資料。每組資料的第1行給出兩個...