/*
* 檔名稱: main.cpp
* 完成日期:2023年12月18日* 版本號:codeblocks
** 問題描述: 設計乙個演算法,判斷給定的二叉樹是否是二叉排序樹。
* 輸入描述: 無
* 程式輸出: 見執行結果
*/#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"));
資料結構實踐 是否二叉排序樹?
本文是 資料結構基礎系列 8 查詢 的實踐專案參考。專案 是否二叉排序樹?設計乙個演算法,判斷給定的二叉樹是否是二叉排序樹。參考解答 int judgebst 是設計的演算法對應的實現。include include define maxsize 100 typedef int keytype 定義...
資料結構 二叉排序樹
二叉排序樹是一種特殊結構的二叉樹,它作為一種表的組織手段,通常被稱為 樹表。可以作為一種排序和檢索的手段。定義 二叉排序樹或是空樹,或是具有下述性質的二叉樹 其左子樹上所有結點的資料值均小於根結點的資料值 右子樹上所有結點的資料值均大於或等於根結點的資料值。左子樹和右子樹又各是一棵二叉排序樹。對二叉...
資料結構 二叉排序樹
二叉排序樹 binarysorttree 具有下列性質的二叉樹 1 若左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 2 若右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 3 左 右子樹也分別為二叉排序樹 include includeusing namespace std type...