第十四周專案3 是否二叉排序樹?

2021-07-25 06:40:42 字數 2105 閱讀 2211

問題:

[cpp]view plain

copy

/*  

* 檔名稱:專案3.cbp  

* 作    者:朱建豪  

* 完成日期:2023年12月9日  

* 版 本 號:v1.0  

* 問題描述:設計乙個演算法,判斷給定的二叉樹是否是二叉排序樹。  

* 輸入描述:無  

* 程式輸出:測試資料  */

**:[cpp]view plain

copy

#include 

#include 

#define maxsize 100  

typedef

intkeytype;                    

//定義關鍵字型別  

typedef

char

infotype;    

typedef

struct

node                     

//記錄型別  

bstnode;    

intpath[maxsize];                      

//全域性變數,用於存放路徑  

void

dispbst(bstnode *b);               

//函式說明  

intinsertbst(bstnode *&p,keytype k)    

//在以*p為根節點的bst中插入乙個關鍵字為k的節點  

else

if(k==p->key)    

return

0;    

else

if(kkey)    

return

insertbst(p->lchild,k);  

//插入到*p的左子樹中  

else

return

insertbst(p->rchild,k);  

//插入到*p的右子樹中  

}    

bstnode *creatbst(keytype a,int

n)    

//由陣列a中的關鍵字建立一棵二叉排序樹  

void

dispbst(bstnode *bt)    

//以括號表示法輸出二叉排序樹bt  

}    

}    

/* int judgebst(bstnode *bt)為判斷乙個樹是否為排序二叉樹設計的演算法的實現 

*/keytype predt=-32767; //predt為全域性變數,儲存當前節點中序前趨的值,初值為-∞  

intjudgebst(bstnode *bt)   

//判斷bt是否為bst  

}    

intmain()    

,n=10;    

printf("建立排序二叉樹:"

);    

bt=creatbst(a,n);    

dispbst(bt);    

printf("\n"

);    

printf("bt%s\n"

,(judgebst(bt)?

"是一棵bst"

:"不是一棵bst"

));    

bt->lchild->rchild->key = 30;  //搞個破壞!  

printf("修改後的二叉樹:"

);    

dispbst(bt);    

printf("\n"

);    

printf("bt%s\n"

,(judgebst(bt)?

"是一棵bst"

:"不是一棵bst"

));    

return

0;    

}    

執行結果:

知識點總結:

判斷是否是二叉排序樹。

第十四周 專案3 是否二叉排序樹?

檔名稱 main.cpp,btree.h,btree.cpp 完成日期 2015年11月5日 版本號 code block 12.11 問題描述 設計乙個演算法,判斷給定的二叉樹是否是二叉排序樹。測試檔案 include include define maxsize 100 typedef int ...

第十四周專案3 是否二叉排序樹

問題 檔名稱 專案3.cbp 作 者 李藝 完成日期 2015年12月4日 版 本 號 v1.0 問題描述 設計乙個演算法,判斷給定的二叉樹是否是二叉排序樹。輸入描述 無 程式輸出 測試資料 include include define maxsize 100 typedef int keytype...

第十四周專案3 是否二叉排序樹

設計乙個演算法,判斷給定的二叉樹是否是二叉排序樹。include include define maxsize 100 typedef int keytype 定義關鍵字型別 typedef char infotype typedef struct node 記錄型別 bstnode int pat...