6 2 是否二叉搜尋樹 20分

2021-10-04 08:21:41 字數 1464 閱讀 6815

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是否二叉搜尋樹...