第十四周專案3 驗證二叉排序樹相關演算法

2021-07-09 01:23:27 字數 1561 閱讀 4832

/*

作 者:佟興鋒

完成日期:2023年11月30日

版 本 號:v1.0

問題描述:(1)由整數序列構造二叉排序樹;

(2)輸出用括號法表示的二叉排序樹;

(3)用遞迴演算法和非遞迴演算法查詢關鍵字55;

(4)分別刪除43和55,輸出刪除後用括號法表示的二叉排序樹。

驗證**:

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

}

執行結果:

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

問題及 完成日期 2016年12月3日 問題及 由整數序列構造二叉排序樹 2 輸出用括號法表示的二叉排序樹 3 用遞迴演算法和非遞迴演算法查詢關鍵字55 4 分別刪除46,輸出刪除後用括號法表示的二叉排序樹。cpp view plain copy include include typedef in...

第十四周專案3演算法驗證 二叉排序樹

問題及描述 輸出描述 include include typedef int keytype typedef char infotype 10 typedef struct node 記錄型別 bstnode 在p所指向的二叉排序樹中,插入值為k的節點 int insertbst bstnode p...

第十四周專案1 驗證演算法 (3)二叉排序樹

問題及 煙台大學計算機與控制工程學院 作 者 劉倩 完成日期 2016年11月25日 1 由整數序列構造二叉排序樹 2 輸出用括號法表示的二叉排序樹 3 用遞迴演算法和非遞迴演算法查詢關鍵字55 4 分別刪除43和55,輸出刪除後用括號法表示的二叉排序樹。include include typede...