二分搜索树元素的插入

#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 协议》,转载必须注明作者和本文链接
刻意学习
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
118
粉丝
88
喜欢
173
收藏
244
排名:367
访问:2.6 万
私信
所有博文
社区赞助商