/*
* 檔名稱:專案4.cbp
* 作 者:朱希康
* 完成日期:2023年12月14日
* 版 本 號:v1.0
* 問題描述:構造二叉排序樹,替換乙個元素後判斷是否為二叉排序樹
* 輸入描述:無
* 程式輸出:判斷是否為二叉排序樹
*/
#include #include #define maxsize 100
typedef int keytype; //定義關鍵字型別
typedef char infotype;
typedef struct node //記錄型別
bstnode;
int path[maxsize]; //全域性變數,用於存放路徑
void dispbst(bstnode *b); //函式說明
int insertbst(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中的關鍵字建立一棵二叉排序樹
}}/*
int judgebst(bstnode *bt)為判斷乙個樹是否為排序二叉樹設計的演算法的實現
*/keytype predt=-32767; //predt為全域性變數,儲存當前節點中序前趨的值,初值為-∞
int judgebst(bstnode *bt) //判斷bt是否為bst
}int main()
,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;
}
執行結果:
知識點總結:
判斷是否為二叉樹即判斷該節點為左孩子還是右孩子,再和其根節點進行比較。
第十四周 判斷是否為二叉排序樹
問題描述 構造二叉排序樹,替換乙個元素後判斷是否為二叉排序樹。程式輸出 判斷是否為二叉排序樹 include include define maxsize 100 typedef int keytype 定義關鍵字型別 typedef char infotype typedef struct nod...
第十四周專案3 判斷是否為二叉排序樹
問題及 煙台大學計算機與控制工程學院 作 者 劉倩 完成日期 2016年11月25日 問題描述 判斷給定的二叉樹是否是二叉排序樹。include include define maxsize 100 typedef int keytype 定義關鍵字型別 typedef char infotype ...
第十四周專案3 判斷是否是二叉排序樹
問題及 檔名稱 zhou.cpp 作 者 呂方舟 完成日期 2015年12月8日 版 本 號 v1.0 問題描述 設計乙個演算法,判斷給定的二叉樹是否是二叉排序樹。輸入描述 無 程式輸出 測試資料 include include define maxsize 100 typedef int keyt...