題意理解 :
給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。
例如,按照序列和插入初始為空的二叉搜尋樹, 都得到一樣的結果。
問題:對於輸入的各種插入序列,你需要判斷它們是否能 生成一樣的二叉搜尋樹。
輸入樣例:
4 23 1 4 2
3 4 1 2
3 2 4 1
2 12 1
1 20
輸出樣例:
yesno
no求解思路
兩個序列是否對應相同搜尋樹的判別 :
1.分別建兩棵搜尋樹的判別方法
2.不建樹的判別方法
3. 建一棵樹,再判別其他序列是否與該樹一致
此處我們用第三種方法:
關鍵思路:
如何判斷乙個序列和一顆搜素樹是否一樣?
方法:在樹t中按順序搜尋序列中的每個數 , 如果每次搜尋所經過的結點在前面均出現過,則一致 ,否則(某次搜尋中遇到前面未出現的結點),則不一致。
typedef struct treenode *tree;
struct treenode ;
int main()
return t;
}tree newnode( int v )
int check ( tree t, int v )
else
else return 0;
} }int judge( tree t, int n )
void freetree ( tree t )
判斷是否為同一棵搜尋樹
include include using namespace std 讀入 n 和l n代表又多少個元素 l代表要比較多少個序列 typedef struct student btree,tree void init btree btree l 對樹的初始化 btree insert node b...
PTA判斷是否是同一棵二叉搜尋樹
思路 將第乙個序列作為初始序列建樹,然後把之後的序列的元素按順序在樹中做查詢,通過比較每次查詢過程中所遇到的節點是否在序列 現過,來判定該序列和初始序列是否是同一棵二叉搜尋樹 include include typedef struct treenode tree struct treenode t...
判斷是否同一棵二叉搜尋樹
給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。例如分別按照序列和插入初始為空的二叉搜尋樹,都得到一樣的結果。於是對於輸入的各種插入序列,你需要判斷它們是否能生成一樣的二叉搜尋樹。輸入格式 輸入包含若干組測試資料。每組資料的第1行給出兩個正整數...