資料結構 二叉搜尋樹 查詢 插入 刪除

2021-08-13 09:46:19 字數 1503 閱讀 2193

#2017-12-12  2:00

#武漢工程大學郵電與資訊工程學院郵科院校區

#軟體工程1604穀子毅

二叉搜尋樹

也叫二叉排序樹或二叉查詢樹

一顆二叉樹,可以為空;如果不空,滿足以下性質: 

1.非空左子樹的所有鍵值小於根節點

2.非空左子樹的所有鍵值小於根節點

3.左右子樹都是二叉搜尋數

部分函式:

1.查詢元素x,返回位址 

2.查詢最小元素,返回位址 

3.查詢最大元素,返回位址 

4.插入

5.刪除

/*查詢

查詢從根結點開始,如果樹空,返回null

若非空,根結點與x比較,進行不同處理

3.x等於,返回結點指標 */

/*遞迴方法*/

position find(elementtype x,bintree bst)

/*非遞迴方法: 效率決定於樹的高度*/

position find(elementtype x,bintree bst)

return null;

}

/*查詢最大,最小元素*/ 

// 最大元素一定在樹的最右分枝的端結點

// 最小元素一定在樹的最左分枝的端結點

/*查詢最小元素遞迴法*/

position findmin(bintree bst)

/*查詢最大元素非遞迴法*/

position findmax(bintree bst)

/*二叉搜尋樹的插入*/

//關鍵是要找到元素應該插入的位置

//可以採用與find類似的方法

bintree insert(elementtype x,bintree bst) /*開始找要插入元素的位置*/

else

if(xdata)

bst->left=insert(x,bst->left)

/*遞迴插入左子樹*/

else if(x>bst->data)

bst->right=insert(x,bst->right)

/*遞迴插入右子樹*/

/*else 若x已存在,則什麼都不做*/

return bst;

}

/*二叉搜尋樹的刪除*/

//考慮三種情況:

// 刪除的是葉結點:直接刪除,再改父指標置為 null

// 刪除的結點有乙個孩子:父結點指向要刪除的結點的孩子

// 刪除的結點有兩個子樹: 用右子樹的最小元素或

// 者左子樹的最大元素替代被刪除結點

bintree delete(elementtype x,bintree bst)

else

return bst;

}

資料結構 二叉搜尋樹的插入刪除查詢

bst.h pragma once includetypedef char btreetype 建立乙個二叉搜尋樹的結構 typedef struct btreenodebtreenode 初始化乙個二叉搜尋樹 void btreeinit btreenode btree 在二叉搜尋樹中插入乙個元素...

資料結構 搜尋二叉樹的插入 刪除 查詢

搜尋二叉樹 非遞迴 搜尋二叉樹的插入 int bstreeinsert bstreenode pptree,datatype x parent null cur pptree while cur else if cur dataelse 找到要插入的位置 if parent dataelse ret...

二叉搜尋樹的插入,查詢,刪除

include using namespace std template class node 預設析構函式 templatenode node template node node t value template class bstree 預設析構 void buildbstree 建立二叉樹 ...