千家信息网

C++实现二叉搜索树的代码怎么写

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇"C++实现二叉搜索树的代码怎么写"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"
千家信息网最后更新 2026年11月03日C++实现二叉搜索树的代码怎么写

这篇"C++实现二叉搜索树的代码怎么写"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"C++实现二叉搜索树的代码怎么写"文章吧。

具体代码如下所示:

class BST{public:  struct Node  {    int key;//节点的key    int value;//节点的value    Node* left;    Node *right;    int N;//节点的叶子节点数目    Node(int _key, int _value, int _N)    {      key = _key;      value = _value;      N = _N;    }  };  BST();  ~BST();  void put(int key, int value);  int get(int key);  int deleteKey(int key);private:  Node* _deleteKey(int key, Node *x);  Node* _deleteMin(Node *x);  int size(Node *x);  int _get(int key, Node* x);  Node * _put(int key, int value,Node *x);  Node * min(Node *x);  Node* root;};inline int BST::size(Node * x){  if (x == nullptr)return 0;  return x->N;}int BST::_get(int key, Node * x){  if (x == nullptr)return 0;  if (x->key < key)_get(key, x->right);  else if (x->key > key)_get(key, x->left);  else {    return x->value;  }  return 0;}BST::Node* BST::_put(int key, int value, Node * x){  if (x == nullptr) {    Node *tmp = new Node(key, value, 1);    return tmp;  }  if (x->key > key) {    x->left=_put(key, value, x->left);  }  else if (x->key < key) {    x->right=_put(key, value, x->right);  }  else x->key = key;   x->N = size(x->left) + size(x->right) + 1;  return x;}BST::Node* BST::min(Node * x){  if (x->left == nullptr)return x;  return min(x->left);}BST::BST(){}BST::~BST(){}void BST::put(int key, int value){  root=_put(key, value, root);}int BST::get(int key){  return _get(key, root);}BST::Node* BST::_deleteKey(int key, Node * x){  if (x->key > key)x->left = _deleteKey(key, x->left);  else if (x->key < key)x->right = _deleteKey(key, x->right);  else {    if (x->left == nullptr)return x->right;    else if (x->right == nullptr)return x->left;    else {      Node *tmp = x;      x = min(tmp->right);      x->left = tmp->left;      x->right = _deleteMin(tmp->right);    }  }  x->N = size(x->left) + size(x->right) + 1;  return x;}BST::Node* BST::_deleteMin(Node * x){  if (x->left == nullptr)return x->right;  x->left = _deleteMin(x->left);  x->N = size(x->left) + size(x->right) + 1;  return x;}int BST::deleteKey(int key){  return _get(key, root);}

以上就是关于"C++实现二叉搜索树的代码怎么写"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

0