二分搜索树元素的插入
#include <iostream>
using namespace std;
//套用模板函数
template <typename Key, typename Value>
class BST{
private:
//构造节点Node
struct Node{
Key key;
Value value;
Node *left;
Node *right;
Node(Key key, Value value){
this->key = key;
this->value = value;
//初始值为空
this->left = this->right = NULL;
}
};
//根节点
Node *root;
//节点数量
int count;
public:
BST(){
//初始值为空
root = NULL;
count = 0;
}
~BST(){
//TODO:~BST()
}
int size(){
return count;
}
bool isEmpty(){
return count == 0;
}
//插入操作
void insert(Key key, Value value){
//向根节点中插入key, value
root= insert(root, key, value);
}
private:
//插入操作
//向以node为根节点的二分搜索树中,插入节点(key,value),使用递归算法
//返回插入新节点后的二分搜索树的根
Node* insert(Node *node, Key key, Value value){
if(node == NULL){
count ++;
return new Node(key, value);
}
if(key == node->key){
node->value = value;
}
else if(key > node->key){
node->right = insert(node->right,key,value);
}
else //key < node->key
node->left = insert(node->left, key, value);
}
};
本作品采用《CC 协议》,转载必须注明作者和本文链接