第14周專案2 二叉排序樹中查詢的路徑

2021-07-25 05:50:36 字數 1501 閱讀 1471

問題:

/* 

* 檔名稱:123.cpp

* 作 者:王靖淇

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

* 版 本 號: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中的關鍵字建立一棵二叉排序樹

else

}//查詢並顯示經過的路徑

void searchresult(bstnode *bt, int k1)

void dispbst(bstnode *bt)

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

}}int main()

,n=10;

printf("建立的bst樹:");

bt=creatbst(a,n);

dispbst(bt);

printf("\n");

printf(" 查詢%d關鍵字:",k1);

searchresult(bt,k1);

printf(" 查詢%d關鍵字:",k2);

searchresult(bt,k2);

return 0;

}

執行結果:

知識點總結:

運用了平衡二叉樹的構造以及查詢路徑的演算法。

學習心得:

要求輸出路徑,就要定義乙個記錄路徑的陣列path,隨著search函式的執行而增加元素。

第14周專案2二叉排序樹中查詢的路徑

include include define maxsize 100 typedef int keytype 定義關鍵字型別 typedef char infotype typedef struct node 記錄型別 bstnode int path maxsize 全域性變數,用於存放路徑 vo...

第14周 專案5 二叉排序樹的查詢

問題及描述 include include define maxsize 100 typedef int keytype 定義關鍵字型別 typedef char infotype typedef struct node 記錄型別 bstnode int path maxsize 全域性變數,用於存...

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

問題及 檔名稱 cpp1.cpp 完成日期 2015年11月30日 版本號 v1.0 問題描述 設計乙個演算法,判斷給定的二叉樹是否是二叉排序樹 include include define maxsize 100 typedef int keytype 定義關鍵字型別 typedef char i...