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

淄博网站电子商城平台建设设计签名的小程序

淄博网站电子商城平台建设,设计签名的小程序,wordpress 添加幻灯片,优化设计三年级上册答案语文前言 二叉搜索树(搜索二叉树,Binary search tree)是一种特殊的二叉树。其规则为:左子树的值一定小于等于根,右子树的值一定大于等于根,并且左右子树也为搜索二叉树。 二叉搜索树的插入 1.若树为空&#xf…

前言

        二叉搜索树(搜索二叉树,Binary search tree)是一种特殊的二叉树。其规则为:左子树的值一定小于等于根,右子树的值一定大于等于根,并且左右子树也为搜索二叉树。

二叉搜索树的插入

        1.若树为空,插入的数据为根节点的数据

        2.若树不为空,按照二叉搜索树的性质,判断节点的值与插入值的大小关系。若大于节点的值则往右边走。若小于节点的值则往左边走

二叉搜索树的搜索

        1.从根节点开始查找,小于节点值则往左边,大于节点值则往右边。找到就返回

        2.若遍历完都没有找到,即返回找不到

二叉搜索树的删除(重点)

        1.删除叶子节点(既没有左右孩子),直接删除然后将其父亲节点的指针赋值为nullptr

        2.删除只有一个孩子的节点,直接删除然后将孩子连接至父亲节点

        3.删除有两个孩子的节点,不能直接删除。从这个节点出发寻找左子树的最大值(既最右节点)或者右子树的最小值(既最左节点)。将找到的值的赋值给要删除的节点,然后删除我们找到的节点,这样就能保证不会破坏二叉搜索树的性质。

        补充:若删除根节点的话,要单独处理一下

代码实现

template<class K>
struct BSNode
{K _val;BSNode<K>* _left;BSNode<K>* _right;BSNode(const K& key):_val(key), _left(nullptr), _right(nullptr){ }
};template<class K>
class BSTree
{//typedef BSNode<K> Node;using Node = BSNode<K>;//新的重命名方式
public:void Insert(const K& key)//搜索二叉树的插入(不允许冗余){Node* cur = _root;if (!cur){_root = new Node(key);}else{Node* parent = cur;while (cur){if (cur->_val < key){parent = cur;cur = cur->_right;}else{parent = cur;cur = cur->_left;}}if (parent->_val < key){parent->_right = new Node(key);}else if (parent->_val > key){parent->_left = new Node(key);}elsereturn;}}bool Search(const K& key)//查找{Node* cur = _root;while (cur){if (cur->_val < key){cur = cur->_right;}else if (cur->_val > key){cur = cur->_left;}elsereturn true;}return false;}//搜索二叉树的删除void Erase(const K& key){Node* cur = _root;Node* parent = cur;//先找到相应位置while (cur){if (cur->_val < key){parent = cur;cur = cur->_right;}else if (cur->_val > key){parent = cur;cur = cur->_left;}elsebreak;}if (!cur)return;//进行删除if (!cur->_left && !cur->_right)//没有孩子{if (cur == _root)//若删除根节点{delete _root;_root = nullptr;}else{if (parent->_left == cur)parent->_left = nullptr;elseparent->_right = nullptr;delete cur;cur = nullptr;  // 显式置空}}else if (!cur->_left || !cur->_right)//有一个孩子{if (cur == _root)//若删除根节点{if (cur->_left){_root = cur->_left;delete cur;cur = nullptr;  // 显式置空}else{_root = cur->_right;delete cur;cur = nullptr;  // 显式置空}}else{if (!cur->_left){if (parent->_left == cur){parent->_left = cur->_right;delete cur;cur = nullptr;  // 显式置空}else{parent->_right = cur->_right;delete cur;cur = nullptr;  // 显式置空}}else{if (parent->_left == cur){parent->_left = cur->_left;delete cur;cur = nullptr;  // 显式置空}else{parent->_right = cur->_left;delete cur;cur = nullptr;  // 显式置空}}}}else//有两个孩子{//寻找左子树最大值(或右子树最小值)来替换curNode* Replace = cur->_left;Node* Replacep = cur;while (Replace->_right){Replacep = Replace;Replace = Replace->_right;}swap(Replace->_val, cur->_val);if(Replacep->_right == Replace)Replacep->_right = Replace->_left;elseReplacep->_left = Replace->_left;delete Replace;}}void Inorder()//中序遍历{_Inorder(_root);cout << endl;}private:void _Inorder(Node* root)//中序遍历{if (!root)return;_Inorder(root->_left);cout << root->_val<<" ";_Inorder(root->_right);}Node* _root = nullptr;
};


文章转载自:

http://7EKsYTnA.cbpkr.cn
http://zmWQYNTv.cbpkr.cn
http://QslSBJMC.cbpkr.cn
http://rDu5oad8.cbpkr.cn
http://oXK7CHY0.cbpkr.cn
http://y8QG4gS7.cbpkr.cn
http://7X3g7EOC.cbpkr.cn
http://mZ3QDbnx.cbpkr.cn
http://XyLU87Ol.cbpkr.cn
http://xqQLgT7o.cbpkr.cn
http://POkLU1pD.cbpkr.cn
http://TVa2KqVu.cbpkr.cn
http://A5uQR0CV.cbpkr.cn
http://N4bI77wH.cbpkr.cn
http://jW7X9RmP.cbpkr.cn
http://r8WADqym.cbpkr.cn
http://qRShZ73b.cbpkr.cn
http://ScKxkYmq.cbpkr.cn
http://EOUp2OTY.cbpkr.cn
http://Cw42IFhi.cbpkr.cn
http://EV6DvfCg.cbpkr.cn
http://m5JId0cg.cbpkr.cn
http://c8JFH8Le.cbpkr.cn
http://0tsgmbN9.cbpkr.cn
http://xaEcWypw.cbpkr.cn
http://b4x0r9n7.cbpkr.cn
http://aZi2Nedt.cbpkr.cn
http://N7Bud3uE.cbpkr.cn
http://6jCKCMf7.cbpkr.cn
http://xWApaSWh.cbpkr.cn
http://www.dtcms.com/wzjs/664387.html

相关文章:

  • ps网站轮播图怎么做网络营销推广活动
  • 门户网站怎么开发深圳专业网站开发
  • 北京单位网站建设培训网站怎么做交易
  • 页面设计排版网站网站防采集
  • 快速网站建设哪家好app拉新推广平台代理
  • 国内有哪些比较好的做定制旅游网站北京网络营销技术培训
  • 怎么建公司网站账号做去自己的网站首页
  • 用什么技术来做网站沅江网站开发
  • 做的网站一直刷新百度做网站的服务合同
  • 有没有打代码的网站广州仿站定制模板建站
  • 凡科免费网站可以做推广吗网络营销是什么意思?
  • 专业做汽车的网站在线制作简历的网站
  • 江西省上饶市城乡建设网站wordpress最好用的编辑器缓慢
  • 网站怎么免费做推广方案公司网站系统
  • 网站正在建设中色无夜品牌建设指标考核
  • 网站开发中界面小公司怎样自己建网站
  • 水资源监控能力建设 网站网站开发技术方案模板
  • 中国设计网站导航免费推广的渠道有哪些
  • 建行的官方网站域名 就一个网站
  • 视频网站建设框架en wordpress
  • 快速网站轻松排名旅游网站项目评估
  • 太原做网站直通车e福州首页
  • 长沙网站制作建设中小网站建设
  • 网站源码大全免费定制类网站
  • 重庆招标建设信息网站广州天极科技
  • 博客类网站模板在百度上注册公司网站要多少钱
  • 塘厦镇网站建设公司请人制作一个网站需要多少钱
  • 学校网站建设策划phpstudy
  • 哈尔滨网站关键词优化wordpress怎么加表格
  • 漂亮的学校网站模板下载南宁制作营销型网站