實現了二叉查詢樹的:插入,查詢,獲取最大、最小值,刪除最大、最小值,按照給定的鍵值刪除鍵值,向上取整等方法。
**如下:
標頭檔案如下:
/*
* bst.h
* * created on: 2023年6月28日
* author: zhongchao
*/#ifndef _bst_
#define _bst_
#include #include #include #include using namespace std;
templatestruct node
;templateclass bst
;#endif /* _bst_ */
原始檔
#include "bst.h"
templatebst::bst()
templateint bst::size()
templateint bst::size(node* node)
templatevoid bst::add(t1 key, t2 value)
templatenode* bst::add(node** node, t1 key, t2 value)
if((*node)->_key < key)
else if((*node)->_key > key)
else
(*node)->n = size((*node)->left) + size((*node)->right) + 1;
return *node;
}templatet2 bst::get(t1 key)
templatenode* bst::get(node* node, t1 key)
if(node->_key < key)
else if(node->_key > key)
else if(node->_key == key) }
templatet2 bst::min()
templatenode* bst::min(node* node)
}templatet2 bst::max()
templatenode* bst::max(node* node)
}templatevoid bst::delemin()
templatenode* bst::delemin(node* node)
else
return node;
}templatevoid bst::delemax()
templatenode* bst::delemax(node* node)
else
return node;
}templatevoid bst::del(t1 key)
templatenode* bst::del(node* node, t1 key)
else if(node->_key > key)
else if(node->_key < key) }
templatet1 bst::floor(t1 key)
templatenode* bst::floor(node* node, t1 key)
templatet1 bst::select(int k)
templatenode* bst::select(node* node, int k)
templateint bst::rank(t1 key)
templateint rank(t1 key, node* node)
void testbst()
基於二叉查詢樹的符號表
1.資料表示 我們巢狀定義乙個私有node類來表示二叉查詢樹上的乙個結點。每個結點都含有乙個鍵,乙個值,一條左鏈結,一條右鏈結。左鏈結指向一棵由小於該結點的所有鍵組成的二叉查詢樹,右鏈結指向一棵由大於該結點的所有鍵組成的二叉查詢樹。變數n給出以該結點為根的子樹的結點總數。這樣有 size x siz...
基於二叉查詢樹的符號表(java)
package bst public class bstcomparable value public intsize private intsize node x public value get key key private value get node x,key key public vo...
符號表 二叉查詢樹的簡單學習
所有學習內容全部來自於 演算法 第四版 二叉查詢樹是符號表的一種實現。符號表,又稱為字典,或者索引之類的。主要目的就是講乙個鍵和乙個值聯絡起來,能夠通過鍵增刪改查等操作。符號表有二叉查詢樹 紅黑樹以及雜湊表的實現。基於這些演算法,能夠擴充套件出很多應該用。主要實現如下方法 key的話需要繼承於com...