判斷不同的序列是否是同一棵搜尋樹?

2021-10-08 13:37:45 字數 838 閱讀 3132

題意理解 :

給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。

 例如,按照序列和插入初始為空的二叉搜尋樹, 都得到一樣的結果。

問題:對於輸入的各種插入序列,你需要判斷它們是否能 生成一樣的二叉搜尋樹。

輸入樣例:

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行給出兩個正整數...