符號表 二叉查詢樹

2021-06-22 17:57:51 字數 1818 閱讀 9982

實現了二叉查詢樹的:插入,查詢,獲取最大、最小值,刪除最大、最小值,按照給定的鍵值刪除鍵值,向上取整等方法。

**如下:

標頭檔案如下:

/*

* 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...