#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 建立二叉樹 ...