第十四周 專案三 二叉樹排序

2021-07-25 02:14:40 字數 1709 閱讀 4260

問題描述及**:

/*  

,煙台大學計算機與控制工程學院

作 者:邊朔

完成日期:2023年12月1日

問題描述:設計乙個演算法,輸出在二叉排序中查詢時查詢某個關鍵字經過的路

徑。

輸入描述:無

程式輸出:測試資料

*/

#include #include typedef int keytype;  

typedef char infotype[10];

typedef struct node //記錄型別

bstnode;

//在p所指向的二叉排序樹中,插入值為k的節點

int insertbst(bstnode *&p,keytype k)

else if (k==p->key) //樹中存在相同關鍵字的結點,返回0

return 0;

else if (kkey)

return insertbst(p->lchild,k); //插入到*p的左子樹中

else

return insertbst(p->rchild,k); //插入到*p的右子樹中

} //由有n個元素的陣列a,建立乙個二叉排序樹

bstnode *createbst(keytype a,int n) //返回bst樹根結點指標

} } //在bt指向的節點為根的排序二叉樹中,查詢值為k的節點。找不到返回null

bstnode *searchbst(bstnode *bt,keytype k)

//二叉排序樹中查詢的非遞迴演算法

bstnode *searchbst1(bstnode *bt,keytype k)

return null;

} void delete1(bstnode *p,bstnode *&r) //當被刪*p結點有左右子樹時的刪除過程

} void delete(bstnode *&p) //從二叉排序樹中刪除*p結點

else if (p->lchild==null) //*p結點沒有左子樹的情況

else delete1(p,p->lchild); //*p結點既沒有左子樹又沒有右子樹的情況

} int deletebst(bstnode *&bt, keytype k) //在bt中刪除關鍵字為k的結點

} } int main()

; bt=createbst(a,n);

printf("bst:");

dispbst(bt);

printf("\n");

printf("刪除%d結點\n",x);

if (searchbst(bt,x)!=null)

return 0;

}

執行結果:

學習心得:

對於二叉樹排序中,用到了相當多的遞迴與二叉樹的基礎知識,在看與寫的過程中,得到了有效的複習,同時對於排序的新知識點也有了新的體會。

第十四周專案二 二叉樹排序樹中查詢的路徑

問題及 all right reserved.檔名稱 二叉樹排序樹中查詢的路徑.cpp 版本號 v1.0 問題描述 設計乙個演算法,輸出在二叉排序中查詢時查詢某個關鍵字經過的路徑。輸入描述 無 程式輸出 根據要求輸出 include include define maxsize 100 typede...

第十四周(專案二) 二叉樹排序樹中查詢的路徑

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...