資源簡介
二叉排序樹。用二叉鏈表作存儲結構。
要求:
(1)以回車('\n')為輸入結束標志,輸入數列L,生成一棵二叉排序樹T;
(2)對二叉排序樹T作中序遍歷,輸出結果;
(3)計算二叉排序樹T查找成功的平均查找長度,輸出結果;
(4)輸入元素x,查找二叉排序樹T,若存在含x的結點,則刪除該結點,并作中序
歷(執行操作2);否則輸出信息“無x”。
代碼片段和文件信息
#include
#include
#include
#include
typedef?struct?Tnode
?{
???int???data;?/*輸入的數據*/
???struct?Tnode?*lchild*rchild;?/*結點的左右指針,分別指向結點的左右孩子*/
?}*nodeBSTnode;
?int?searchBST(node?tint?keynode?fnode?*p)?/*查找函數*/
{
????if(!t)??{*p=f;return?(0);}?/*查找不成功*/
????else????if(key==t->data)
????{
?????*p=t;return?(1);
????}?/*查找成功*/
????else????if(key<=t->data)
????searchBST(t->lchildkeytp);?/*在左子樹中繼續查找*/
????else
????searchBST(t->rchildkeytp);/*在右子樹中繼續查找*/
}
int?insertBST(node?*tint?key)??/*插入函數*(t為根節點)*/
{
????node?p=NULLs=NULL;//p為當前結點,s為要插入的結點
????if(!searchBST(*tkeyNULL&p))?/*查找不成功*/
????{
???????s=(node)malloc(sizeof(BSTnode));//malloc?向系統申請分配指定的內存空間
???????s->data=key;
???????s->lchild=s->rchild=NULL;
???????
評論
共有 條評論