十三周 專案3

2021-08-11 09:36:00 字數 1636 閱讀 1627

問題及描述:

/*  

煙台大學計算機學院

檔名稱:xiangmu.cpp

完成日期:2023年11月26日

問題描述:

設計乙個演算法,判斷給定的二叉樹是否是二叉排序樹。

輸入描述:無

輸出描述:輸出判斷結果

*/

#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;

}

執行結果:

學習心得:

通過這次的練習,我學會了如何判斷乙個二叉樹是否為二叉排序樹。

十三周專案3

輸入描述 無 輸出描述 實驗資料 main函式 include include include graph.h define maxsize 100 void ppath int path,int i,int v 前向遞迴查詢路徑上的頂點 void dispath int dist,int path...

十三周 專案1(1)

問題及描述 煙台大學計算機學院 檔名稱 xia535mu.cpp 完成日期 2017年11月26日 問題描述 驗證折半查詢演算法。請用有序表作為測試序列,分別對查詢90 47 100進行測試。輸入描述 無 輸出描述 輸出查詢位置和結果 include define maxl 100 typedef ...

十三周 專案1(2)

問題及描述 煙台大學計算機學院 檔名稱 xiangmu.cpp 完成日期 2017年11月26日 問題描述 驗證分塊查詢演算法。請用22,4,23,11,20,2,15,13,30,45,26,34,29,35,26,36,55,98,56,74,61,90,80,96,127,158,116,11...