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

福泉网站制作网站建设施工方案

福泉网站制作,网站建设施工方案,装潢公司网站源码php,网站建设中最有效网站推广方式二叉搜索树 二叉搜索树#xff1a; 又为搜索二叉树#xff0c;一般具有以下的性质 若它的左子树不为空#xff0c;则左子树上所有的节点的值都小于父亲节点若它的右子树不为空#xff0c;则右子树上所有的节点的值都大于父亲节点它的左右子树也都为二叉搜索树 二叉搜索树…二叉搜索树 二叉搜索树 又为搜索二叉树一般具有以下的性质 若它的左子树不为空则左子树上所有的节点的值都小于父亲节点若它的右子树不为空则右子树上所有的节点的值都大于父亲节点它的左右子树也都为二叉搜索树 二叉搜索树操作 以下面图示例子 int a[] {8, 3, 1, 10, 6, 4, 7, 14, 13};1、二叉搜索树的查找 从根开始比较查找比根大就往右子树走比根小就往左子树走最多查找树的高度如果走到空就说明没有这个值查找失败 bool Find(const K key){Node* cur _root;if(cur-_key key){cur cur-_left;}else if(cur-_key key){cur cur-_right;}else {return true;}return false;}2、二叉搜索树的插入 插入的具体过程如下 树为空则直接新增节点赋值给root指针树不为空按二叉搜索树性质查找新增位置插入新增节点如果插入的值与它本身的值相等就失败二叉搜索树中不能有相同的值 bool Insert(const K key){//判断是不是空if(_root nullptr){_root new Node(key);return true;}//不是空就插入Node* cur _root;Node* parent nullptr;while(cur){if(cur-_key key){parent cur;cur cur-_left;}else if(cur-_key key){parent cur;cur cur-_right;}else{return false;}}//到这里说明是空cur new Node(key);//链接if(parent-_key key)parent-_left cur;else parent-_right cur;return true;}3、二叉搜索树的删除 首先查找元素是否存在二叉搜索树中如果不存在则返回否则要删除的节点要分以下四种情况 要删除的节点无孩子节点要删除的节点只有左孩子要删除的节点只有右孩子要删除的节点有左右孩子 首先这里可以说是三种情况因为如果没有孩子节点那么就会进入到只有左孩子或者只有右孩子的节点的情况。 bool Erase(const K key){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{//cur的左为空if(cur-_left nullptr){if(cur _root)_root cur-_right;else{if(cur parent-_left){parent-_left cur-_right;}else if(cur parent-_right){parent-_right cur-_right;}}delete cur;return true; }else if(cur-_right nullptr)// cur-_right为空{if(cur _root)_root cur-_right;else {if(cur parent-_left)parent-_left cur-_left;else if(cur parent-_right)parent-_right cur-_left;}delete cur;return true;}else{//替换法 右数最小节点或者左树最大节点,然后赋值删除最小/最大节点//如果都不为空Node* rightMinParent cur; //这里必须赋值为cur因为如果是头删这里就会有问题Node* rightMin cur-_right;//找右数中最小的值while(rightMin-_left){rightMinParent rightMin;rightMin rightMin-_left;}cur-_key rightMin-_key;//此时rightMin的左子树为空右子树可能有值if(rightMin rightMinParent-_left)rightMinParent-_left rightMin-_right;else rightMinParent-_right rightMin-_right;delete rightMin;return true;}}}return false;}二叉搜索树的性能分析 二叉搜索树的插入和删除操作都需要查找所以查找是二查搜索树中的性能关键。 如果有n个节点的二叉搜索树若每个元素查找的概率相等则二叉搜索树的平均查找长度的关键就在于树的深度。 如果树是一颗二叉平衡搜索二叉树那么查找的效率就是OlogN 当然也有特殊的场景如下图所示它的查找效率就会变得非常慢平均比较次数就达到了ON^2
http://www.pierceye.com/news/328894/

相关文章:

  • 美团先做网站还是app学生网站建设的总结与评价
  • 网站建设代理网站wordpress微博
  • dw建设网站视频宁波seo优化项目
  • 网站里添加百度地图浙江网站建设公司
  • php网站开发最新需求排名优化百度
  • 网站制作的电话智慧校园信息门户网站建设
  • 网站备案申请福田企业网站优化方案
  • 企业网站seo怎么做有空间站的国家
  • Linux网站建设总结网站建设目的确定
  • 怎么做网站的内部链接wordpress 写php页面跳转
  • 推广自己的网站网页设计代码html文件怎么查
  • 网站在线制作软件邯郸公众号小程序制作
  • 网站后台生成静态页面天津百度推广电话号码
  • 网站单个页面301跳转湖南省建设局网站
  • 潮州网站建设十堰seo招聘
  • 企业网站建设公司公司系统优化的方法
  • 网站开发与sparkwordpress default
  • 品牌网站建设帮你大蝌蚪北京做网站建设的公司排名
  • 中国建设第一平台网站网络网站建设10大指标
  • 书画院网站源码网站主题模板下载不了
  • 邢台制作网站网上申报流程
  • 做网站的困难做的网站有营销效果吗
  • 高端集团网站建设公司做网站开发的有外快嘛
  • 网站服务器防火墙设置惠州网络推广公司哪家好
  • 做网站根据内容生成pdfwordpress自媒体二号
  • 临沂网站开发不会写代码怎么做网站
  • 怎么做加密货币网站wordpress 多域名登陆
  • 做网站的过程做网站公司广州
  • 女人动漫做受网站wordpress如何作页面
  • 做网站导航栏素材图建筑设计网站制作