当前位置: 首页 > news >正文

廊坊网站建设-纵横网络+网站做网站需要什么东西

廊坊网站建设-纵横网络+网站,做网站需要什么东西,网站怎么做看起来好看,展示设计公司有哪些目录 实现思路 插入操作 删除操作 完整代码 测试案例 总结 二叉搜索树#xff08;Binary Search Tree#xff0c;BST#xff09;是一种常用的数据结构#xff0c;它具有以下特点#xff1a; 左子树上所有节点的值均小于它的根节点的值右子树上所有节点的值均大于它的…目录 实现思路 插入操作 删除操作 完整代码 测试案例 总结 二叉搜索树Binary Search TreeBST是一种常用的数据结构它具有以下特点 左子树上所有节点的值均小于它的根节点的值右子树上所有节点的值均大于它的根节点的值左右子树也分别为二叉搜索树 在实际应用中BST被广泛使用例如在数据库中的索引、哈希表等。 本文将介绍如何使用递归的方式实现BST并提供完整代码和测试案例。 实现思路 BST的基本操作包括查找、插入和删除。这里我们只讲解递归方式实现BST的插入和删除操作。 插入操作 插入操作可以分为两种方式 版本一传入父节点通过比较key值大小递归向下寻找插入位置。版本二使用引用第一步传参时root是_root的别名递归过程中root是父节点指向它的指针的别名修改root就是修改了父节点的连接。 版本二的实现方式更加简洁因此我们选择使用版本二来实现插入操作。 删除操作 删除操作也可以分为两种方式 版本一传入父节点通过比较key值大小递归向下寻找删除节点。版本二使用引用第一步传参时root是_root的别名递归过程中root是父节点_left或·_right的别名修改root就是修改了父节点的连接。 版本二同样更加简洁因此我们选择使用版本二来实现删除操作。需要注意的是当删除节点有两个子节点时需要先找到其左子树中最大的节点或右子树中最小的节点将其值替换到要删除的节点上再删除左子树中最大的节点或右子树中最小的节点。 无论是查找、插入、删除如果使用递归都需要传参根节点通过根节点来递归处理子问题但是在类的实现中成员变量根节点_root是私有变量在类外无法访问针对这种问题C常见的处理方式就是套用一层接口函数定义对应功能的私有函数提供给接口函数调用用户直接调用接口函数和之前没有区别接口函数内再调用对应功能的私有函数私有函数只在类中使用自然就可以调用BST的私有成员_root。 完整代码 #includeiostream using namespace std;template class K class BSTreeNode { public:BSTreeNodeK* _left;BSTreeNodeK* _right;K _key;BSTreeNode(const K key):_left(nullptr), _right(nullptr), _key(key){ } };templateclass K class BSTree {typedef BSTreeNodeK Node; public:bool Find(const K key){return _Find(_root, key);}bool Insert(const K key){return _Insert2(_root, key);}void midOrder(){_midOrder(_root);}bool Erase(const K key){return _Erase(_root, key);} private:Node* _root nullptr;bool _Find(Node* root, const K key){if (root nullptr)return false;if (key root-_key){return _Find(root-_left, key);}else if (key root-_key){return _Find(root-_right, key);}else{return true;}}void _midOrder(Node* root){if (root nullptr)return;_midOrder(root-_left);cout root-_key ;_midOrder(root-_right);}bool _Insert2(Node* root, const K key){if (root nullptr){root new Node(key);return true;}if (key root-_key)return _Insert2(root-_left, key);else if (key root-_key)return _Insert2(root-_right, key);elsereturn false;}bool _Erase(Node* root, const K key){if (root nullptr)return false;if (key root-_key)return _Erase(root-_left, key);else if (key root-_key)return _Erase(root-_right, key);else{if (root-_left nullptr){Node* del root;root root-_right;delete del;}else if (root-_right nullptr){Node* del root;root root-_left;delete del;}else{//要删除的节点有两个子节点替换法//先找到一个合适的替换节点然后把值替换//合适的替换节点绝对是上面的几种情况只有左子树、只有右子树、没有子节点Node* subRight root-_left;while (subRight-_right){subRight subRight-_right;}swap(root-_key, subRight-_key);//交换值后目前虽然整棵树不是搜索二叉树但是root的左右子树都还是BST递归去删除即可return _Erase(root-_left, key);}}return true;} };int main() {int a[] { 8,3,1,6,4,7,14,13 };BSTreeint bst;for (int x : a){bst.Insert(x);}bst.midOrder();//测试遍历删除for (int x : a){bst.midOrder();cout endl;bst.Erase(x);bst.midOrder();cout endl;cout endl;}cout 全部删除成功 endl;system(pause);return 0; }测试案例 int a[] { 8,3,1,6,4,7,14,13 }; BSTreeint bst; for (int x : a) {bst.Insert(x); } bst.midOrder();//测试遍历删除 for (int x : a) {bst.midOrder();cout endl;bst.Erase(x);bst.midOrder();cout endl;cout endl; }cout 全部删除成功 endl;构建的二叉树如下 运行结果如下 1 3 4 6 7 8 13 14 1 3 4 6 7 8 13 14 1 3 4 6 7 8 13 14 1 3 4 6 7 13 14 1 3 4 6 7 13 14 1 3 4 6 7 13 14 1 3 4 6 13 14 1 3 4 6 13 14 1 3 4 6 13 14 1 3 4 6 13 1 3 4 6 13 1 3 4 6 13 1 3 4 6 1 3 4 6 1 3 4 6 1 3 4 1 3 4 1 3 4 1 3 1 3 1 3 1 1 1 全部删除成功总结 本文介绍了使用递归的方式实现BST的插入和删除操作并提供了完整代码和测试案例。递归虽然简洁但需要注意递归边界条件、参数传递方式等问题。在实际应用中也可以使用迭代的方式实现BST的基本操作。
http://www.hkea.cn/news/14522413/

相关文章:

  • 工业皮带怎么做免费的网站商业空间设计图片
  • 网站流量不够找人做网站属于了解些什么呢
  • 免费网站知乎怎么利用代码做网站
  • 北京微信网站设计logo多少钱
  • 关于网站建设管理的通知赤峰网站制作
  • 合肥网站建设搜王道下拉网站接口设置
  • cadisen卡迪森手表网站太原企业建站程序
  • 电子商务网站建设与规划视频甘肃临夏州建设局网站
  • 网站建设有哪些平台亦庄附近的网站建设公司
  • 大连网站建设选高合科技网站快速被收录
  • 新网站如何推广公司推广宣传文案
  • 石基网站建设在阿里巴巴上做网站有效果吗
  • 网站开发公司目前主营业务网站弹窗公告代码
  • 魏县网站建设推广中国建设银行官网网址多少
  • 网站建设客户seo网站推广策略
  • 公司刚成立网站怎么做苏州模板网站专业设计
  • 南京建设网站需要多少钱开发微信小程序多少钱
  • 用域名和主机做网站的详细过程专业管网建设服务
  • 先建网站还是先做网页吐鲁番好网站建设设计
  • 怎么优化网站性能线下推广引流渠道
  • 如何注册网站怎么注册做网站分辨率多少
  • 下载中国建设银行官网站网站建设都用哪个好
  • 排名轻松seo 网站wordpress漏洞
  • 高校思政教育工作网站建设年度关键词
  • 网站建设注意哪些事项濮阳做网站优化
  • 河北百度推广建站之星网站 seo优化
  • 公司网站制作需要多少钱专业做网站排名的人
  • WordPress网站自媒体模板搭建企业网站具体过程
  • 成都自适应网站建设网站建设 国外
  • 网站 系统概述开互联网公司赚钱吗