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

网站制作中文版宁波正规站内优化seo

网站制作中文版,宁波正规站内优化seo,手机wap网站模板下载,如果建网站文章目录 一、二叉搜索树的概念结构和时间复杂度二、二叉搜索树的插入三、二叉搜索树的查找四、二叉搜索树的删除#xff08;最麻烦#xff0c;情况最多#xff0c;一一分析#xff09;3.1首先我们按照一般情况下写#xff0c;不考虑特殊情况下4.1.1左为空的情况#xff… 文章目录 一、二叉搜索树的概念结构和时间复杂度二、二叉搜索树的插入三、二叉搜索树的查找四、二叉搜索树的删除最麻烦情况最多一一分析3.1首先我们按照一般情况下写不考虑特殊情况下4.1.1左为空的情况与右为空的情况差不多4.1.2两边都不为空的情况下 4.1其次我们考虑极端情况如果刚好是整体树的根要删除 五、二叉搜索树的中序遍历六、二叉搜索树的拷贝构造函数析构函数赋值操作6.1 赋值操作比较简单6.2拷贝构造6.3析构函数 七、全部源码展现递归玩法的代码也传进来了下次讲解 先赞后看养成习惯^ _ ^3 ❤️ ❤️ ❤️ 码字不易大家的支持就是我坚持下去的动力。点赞后不要忘了关注我哦 所属专栏:C进阶 一、二叉搜索树的概念结构和时间复杂度 二叉搜索树Binary Search Tree又称二叉排序树Binary Sort Tree是一种特殊类型的二叉树它所有的根节点大于左子树的节点小于右子树的节点对二叉搜索树进行中序遍历即可得到有序的数列。二叉搜索树的时间复杂度由树的高度决定其搜索、插入和删除的时间复杂度均为 O(log n)其中 n 是节点数。在最坏的情况下仍然会有 O(n)的时间复杂度。 二、二叉搜索树的插入 首先定义一个命名空间作用域在域中进行插入操作构造一个二叉树的节点对节点进行初始化构造 namespace key {templateclass Kstruct BSTreeNode{typedef BSTreeNodeK Node;BSTreeNode(const K key):left(nullptr), right(nullptr),_key(key){}Node* left;Node* right;K _key;};templateclass Kclass BSTree{public:bool Insert(const K key){Node* root new Node(key);if (_root nullptr){_root root;return true;}Node* parent nullptr;Node* cur _root;while (cur){if (cur-_key root-_key){parent cur;cur cur-left;}else if (cur-_key root-_key){parent cur;cur cur-right;}else{return false;}}if (parent-_key root-_key)parent-right root;elseparent-left root;return true;} }代码图解 三、二叉搜索树的查找 查找非常简单按照流程找就行了 typedef BSTreeNodeK Node; bool Find(const K key) {Node* cur _root;while (cur){if (cur-_key key){cur cur-right;}else if (cur-_key key){cur cur-left;}else{return true;}}return false; }四、二叉搜索树的删除最麻烦情况最多一一分析 3.1首先我们按照一般情况下写不考虑特殊情况下 bool Erase(const K key) {assert(_root);Node* parent nullptr;Node* cur _root;while (cur){if (cur-_key key){parent cur;cur cur-left;}else if (cur-_key key){parent cur;cur cur-right;}else{if (cur-left nullptr){if (parent-left cur){parent-left cur-right;}else{parent-right cur-right;}delete cur;return true;}else if (cur-right nullptr){if (parent-left cur){parent-left cur-left;}else{parent-right cur-left;}delete cur;return true;}else{Node* pminleft cur;Node* minleft cur-right;while (minleft-left){pminleft minleft;minleft minleft-left;}cur-_key minleft - _key;if (minleft pminleft-left)pminleft-left minleft-right;elsepminleft-right minleft-right;delete minleft;return true;}}}return false; }代码图解解释找到时候的情况 4.1.1左为空的情况与右为空的情况差不多 4.1.2两边都不为空的情况下 4.1其次我们考虑极端情况如果刚好是整体树的根要删除 调整代码如下 if (cur-left nullptr){if (cur _root){_root cur-right;}else{if (parent-left cur){parent-left cur-right;}else{parent-right cur-right;}}delete cur;return true;}else if (cur-right nullptr){if (cur _root){_root cur-left;}else{if (parent-left cur){parent-left cur-left;}else{parent-right cur-left;}}delete cur;return true; }五、二叉搜索树的中序遍历 这里我们用了一个小技巧就是通过类里面的函数调用类里面的私有成员 //中序遍历 void _Inorder() {Inorder(_root); } private://中序遍历void Inorder(Node* root){if (root nullptr)return;Inorder(root-left);cout root-_key ;Inorder(root-right);}Node* _root nullptr;六、二叉搜索树的拷贝构造函数析构函数赋值操作 6.1 赋值操作比较简单 BSTreeK operator(const BSTree root) {swap(_root, root-_root);return *this; }6.2拷贝构造 BSTree(const BSTreeK t) {_root Copy(t._root); } Node* Copy(Node* root) {if (root nullptr)return nullptr;Node* newroot new Node(root-_key);newroot-left Copy(root-left);newroot-right Copy(root-right);return newroot; }6.3析构函数 ~BSTree() {Distroy(_root); } void Distroy(Node* root) {if (root nullptr)return;Distroy(root-left);Distroy(root-right);delete root; }七、全部源码展现递归玩法的代码也传进来了下次讲解 #pragma once #includeiostream #includeassert.h #includealgorithm using namespace std;namespace key {templateclass Kstruct BSTreeNode{typedef BSTreeNodeK Node;BSTreeNode(const K key):left(nullptr), right(nullptr),_key(key){}Node* left;Node* right;K _key;};templateclass Kclass BSTree{public://查BSTree() default;//自动生成默认构造~BSTree(){Distroy(_root);}BSTree(const BSTreeK t){_root Copy(t._root);}BSTreeK operator(const BSTree root){swap(_root, root-_root);return *this;}typedef BSTreeNodeK Node;bool Find(const K key){Node* cur _root;while (cur){if (cur-_key key){cur cur-right;}else if (cur-_key key){cur cur-left;}else{return true;}}return false;}//增bool Insert(const K key){Node* root new Node(key);if (_root nullptr){_root root;return true;}Node* parent nullptr;Node* cur _root;while (cur){if (cur-_key root-_key){parent cur;cur cur-left;}else if (cur-_key root-_key){parent cur;cur cur-right;}else{return false;}}if (parent-_key root-_key)parent-right root;elseparent-left root;return true;}//删bool Erase(const K key){assert(_root);Node* parent nullptr;Node* cur _root;while (cur){if (cur-_key key){parent cur;cur cur-left;}else if (cur-_key key){parent cur;cur cur-right;}else{if (cur-left nullptr){if (cur _root){_root cur-right;}else{if (parent-left cur){parent-left cur-right;}else{parent-right cur-right;}}delete cur;return true;}else if (cur-right nullptr){if (cur _root){_root cur-left;}else{if (parent-left cur){parent-left cur-left;}else{parent-right cur-left;}}delete cur;return true;}else{Node* pminleft cur;Node* minleft cur-right;while (minleft-left){pminleft minleft;minleft minleft-left;}cur-_key minleft - _key;if (minleft pminleft-left)pminleft-left minleft-right;elsepminleft-right minleft-right;delete minleft;return true;}}}return false;}/ //递归玩法//增bool _InsertR(const K key){_Insert(_root,key);}bool _EraseR(const K key){_Erase(_root, key);}bool _FindR(const K key){_Find(_root,key);}void Distroy(Node* root){if (root nullptr)return;Distroy(root-left);Distroy(root-right);delete root;}//中序遍历void _Inorder(){Inorder(_root);}private://中序遍历void Inorder(Node* root){if (root nullptr)return;Inorder(root-left);cout root-_key ;Inorder(root-right);}bool _Insert(Node* root,const K key){if (root nullptr){Node* newroot new Node(key);root newroot;return true;}if (root-_key key){_Insert(root-left, key);}else if (root-_key key){_Insert(root-right, key);}elsereturn false;}Node _Find(Node* root, const K key){if (root nullptr)return nullptr;if (root-_key key){_Find(root-left);}else if (root-_key key){_Find(root-right);}else{return root;}}Node* Copy(Node* root){if (root nullptr)return nullptr;Node* newroot new Node(root-_key);newroot-left Copy(root-left);newroot-right Copy(root-right);return newroot;}bool _Erase(Node* root, const K key){if (root nullptr)return false;if (root-_key key){return _Erase(root-left,key);}else if(root-_key key){return _Erase(root-right ,key);}else{Node* minright root-right;while (minright-left)minright minright-left;swap(root-_key,minright-_key);minright-right minright-right;delete minright;return true;}}Node* _root nullptr;}; }
http://www.dnsts.com.cn/news/237292.html

相关文章:

  • 手机网站编辑wordpress搭建康乐
  • 甘肃网站建设专业定制推广网页模板
  • 教育机构网站制作模板凡科互动抽奖
  • 网站不见了张北县网站建设
  • 山东招标网官方网站电子商务网站建设作用
  • 大浪网站建设网站开发需求分析模板
  • 汕头汽配网站建设徐州seo外包
  • 中国流量最大的网站排行我要看一集片做网站
  • 网站如何做3d产品展示专业科技公司网站欣赏
  • 网站建设需求范本河海大学土木专业类建设网站
  • asp 网站图标广告策划书模板word
  • 百度云 免费 网站主机公司网站建设的要点
  • 公司网站推广方案模板南京模板建站定制网站
  • 最全网站源码分享生物类培养基网站建设 中企动力
  • 网站开发工程师项目经验怎么写网站源码交易平台代码
  • 文化建设ppt东莞网站运营知名乐云seo
  • HTML5怎么做自适应网站简单的网页制作软件
  • 汽车网站代码网站一直显示建设中
  • 网站制作百度网盘单片机培训
  • ui设计怎么收费seo外链查询工具
  • seo快速排名网站优化中国宁波网手机首页
  • 婚庆网站制作公司如何做网站容易收录
  • 策划营销型网站北京软件培训机构前十名
  • 云服务器做网站要备案吗东莞网站建设seo
  • 高大上的企业网站欣赏网站流量被黑
  • 网站设计目标西安网络公司推荐
  • 手机网站开发步骤软件灵动网站建设
  • 苏州虎丘区建设局网站59网一起做网站
  • 菏泽企业网站建设手机设计软件app哪个好
  • 西安企业网站制作公司做网站系统用什么语言