国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++ 二叉搜索樹(BST)的實現方法

2020-05-23 13:47:28
字體:
來源:轉載
供稿:網友

廢話不多說了,直接給大家貼代碼了,具體代碼如下所示:

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++ 二叉搜索樹(BST)的實現方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 望城县| 北流市| 湘西| 白城市| 仪征市| 凤凰县| 含山县| 佳木斯市| 尼玛县| 平凉市| 泰和县| 江安县| 乌鲁木齐市| 天水市| 玛沁县| 金平| 台北市| 肇州县| 绥化市| 靖边县| 辛集市| 涿鹿县| 大理市| 漯河市| 克什克腾旗| 西平县| 方正县| 铜梁县| 邢台市| 合肥市| 寻甸| 镶黄旗| 大足县| 方城县| 土默特右旗| 大埔区| 龙口市| 石渠县| 汉阴县| 冕宁县| 涪陵区|