6-2 是否二叉搜尋樹 (20分)
本題要求實現函式,判斷給定二叉樹是否二叉搜尋樹。
函式介面定義:
bool isbst ( bintree t );
其中bintree結構定義如下:
typedef struct tnode *position;
typedef position bintree;
struct tnode;
函式isbst須判斷給定的t是否二叉搜尋樹,即滿足如下定義的二叉樹:
定義:乙個二叉搜尋樹是一棵二叉樹,它可以為空。如果不為空,它將滿足以下性質:
非空左子樹的所有鍵值小於其根結點的鍵值。
非空右子樹的所有鍵值大於其根結點的鍵值。
左、右子樹都是二叉搜尋樹。
如果t是二叉搜尋樹,則函式返回true,否則返回false。
裁判測試程式樣例:
#include
#include
typedef enum bool;
typedef int elementtype;
typedef struct tnode *position;
typedef position bintree;
struct tnode;
bintree buildtree(); /* 由裁判實現,細節不表 */
bool isbst ( bintree t );
int main()
/* 你的**將被嵌在這裡 */
輸入樣例1:如下圖
輸出樣例1:
yes輸入樣例2:如下圖
輸出樣例2:
no第一種寫法:
bool isbst (bintree t)
p=t->right;
//右孩子
if(p)
return
isbst
(t->left)
&&isbst
(t->right)
;//左右遍歷
}
第二種寫法://找左子樹最大值,右子樹最小值
bool isbst ( bintree t )
if(tright = t->right)
return
(t->left?
(t->data>tleft->data):1
)&&(t->right?
(t->datadata):1
);}}
第三種寫法://中序遍歷,判斷結點是否比左子樹中的最大值還大,如果是則滿足,否則不滿足。空樹特殊情況
bool isbst ( bintree t )
if(t -> right)
return
isbst
(t -> right)
;else
return true;
}
6 2 是否二叉搜尋樹 (25 分
本題要求實現函式,判斷給定二叉樹是否二叉搜尋樹。函式介面定義 bool isbst bintree t 其中bintree結構定義如下 typedef struct tnode position typedef position bintree struct tnode 函式isbst須判斷給定的t...
6 2 是否二叉搜尋樹(25 分)
本題要求實現函式,判斷給定二叉樹是否二叉搜尋樹。bool isbst bintree t 其中bintree結構定義如下 typedef struct tnode position typedef position bintree struct tnode 函式isbst須判斷給定的t是否二叉搜尋樹...
是否二叉搜尋樹 25分
本題要求實現函式,判斷給定二叉樹是否二叉搜尋樹。bool isbst bintree t 其中bintree結構定義如下 typedef struct tnode position typedef position bintree struct tnode 函式isbst須判斷給定的t是否二叉搜尋樹...