/*問題及**
*all right reserved.
*檔名稱:二叉樹排序樹中查詢的路徑.cpp
*版本號;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;
}
執行結果
知識點總結
其實還是折半查詢的思想,只是將所有的折半後的數字換成樹的形式,然後在樹中查詢。平衡度的問題只是複雜度的問題,這個另講。
學習心得
發現前輩們真的是有智慧型,能夠發明出各種的演算法方便人類,這同時也是科學的魅力所在。希望未來的自己能夠成為發明者實施者方便世界。
學完圖之後覺得學查詢輕鬆多了,學了資料結構有了將抽象換為不抽象的能力。
第十四周(專案二) 二叉樹排序樹中查詢的路徑
include include define maxsize 100 typedef int keytype 定義關鍵字型別 typedef char infotype typedef struct node 記錄型別 bstnode int path maxsize 全域性變數,用於存放路徑 vo...
第十四周 專案二二叉樹排序樹中查詢的路徑
檔名稱 查詢.cpp 作 者 周國亮 完成日期 2016年12月2日 版 本 號 v1.0 問題描述 輸入描述 無 程式輸出 若干 include include define maxsize 100 typedef int keytype 定義關鍵字型別 typedef char infotype...
第十四周 專案二二叉樹排序樹中查詢的路徑
檔名稱 查詢.cpp 作 者 陳朋 完成日期 2016年12月15日 版 本 號 v1.0 問題描述 輸入描述 無 程式輸出 若干 include include define maxsize 100 typedef intkeytype 定義關鍵字型別 typedef char infotype ...