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

免费做网站怎么做网站吗2阿里云这么建设网站

免费做网站怎么做网站吗2,阿里云这么建设网站,网络工程师证书有哪些,青岛 网站制作1.搜索树 前面我们已经使用C语言学习完了二叉树#xff0c;懂得了一些二叉树的基本性质已经实现方法 https://mp.csdn.net/mp_blog/creation/editor/139572374#xff0c;本文我们来一起进行二叉树的衍生-二叉搜索树 1.1 概念 二叉搜索树又称二叉排序树#xff0c;它或者是…1.搜索树 前面我们已经使用C语言学习完了二叉树懂得了一些二叉树的基本性质已经实现方法 https://mp.csdn.net/mp_blog/creation/editor/139572374本文我们来一起进行二叉树的衍生-二叉搜索树 1.1 概念 二叉搜索树又称二叉排序树它或者是一棵空树或者是具有以下性质的二叉树: 若它的左子树不为空则左子树上所有节点的值都小于根节点的值 若它的右子树不为空则右子树上所有节点的值都大于根节点的值 它的左右子树也分别为二叉搜索树 简单来说就是给二叉树定义为左右节点左子树比根节点小右子树比根节点大 1.2简单实现二叉搜索树的增加和删除 1.2.1创建二叉搜索树 1.首先在搜索树内定义一个静态类来表示初始二叉树 定义出右指针左指针根节点其他的交给二叉树的增加即可 static class TreeNode{//在类中使用一个整体类来表示二叉树要用静态类int val;TreeNode left;TreeNode right;public TreeNode(int val) {this.val val;}}public TreeNode root;//定义根节点 2.判断输入值是否存在搜索树中 将输入的值和根节点比较大于就将根节点向右移小于就将根节点的值向左移直到找到为止找不到就返回false. public boolean search(int val){//创建二叉搜索树TreeNode cur root;while(cur !null){if(cur.val val){cur cur.left;}else if(cur.valval){cur cur.right;}else {return true;}}return false;} 1.2.2向二叉搜索树内添加元素 首先进行判空将要赋值的数放在二叉树类里 1.判断要添加的值要放在哪和判断是否存在一个道理但是需要找到根节点的上一个指针方便插入。 比方说我们要在这么个搜索二叉树内插入4 1.   4比5小所以往左走 2.   4比3大所以往右走发现cur为空则停止 3.  将parent.right 赋值为4 public void insert(int val){//二叉搜索树的添加TreeNode noot new TreeNode(val);if(root null){root noot;//若为空添加进来的元素则为根节点return;}TreeNode parent null;//负责记录cur的上一个指针TreeNode cur root;while(cur!null){//若cur为零则说明parent的左指针或者右指针已经为插入位置if(valcur.val){parent cur;cur cur.right;}else if(valcur.val){parent cur;cur cur.left;}else{return;//如果找到就没必要添加了}}if(valparent.val){parent.rightnoot;//此时cur是叶子节点所以需要有parent这个变量}else {parent.left noot;}} 1.2.3删除搜索树内的元素难点 思路首先得先找到删除节点的位置  然后我们将删除分为三种情况 1.删除的元素的左子树 null 1.1  cur root 当需要删除的元素在根节点时直接将根节点右子树改为根节点即可 root cur.right; 1.2  cur parent.right parent.right cur.right 由图可得  1.3cur parent.left parent.left cur.right  2.删除的元素的右子树  null(和上面一样) 1.1  cur root 1.2  cur parent.right 1.3cur parent.left 3.删除的元素左子树 null 右子树 null难点 这时我们可以采用替换法找到搜索树中同样适合放在删除位置的元素进行交换 这时 我们可以把左子树的最大值找到也可以将右子树的最小值找到 此时我们在删除的时候可能会面对以下情况 我们发现cur 10的情况可以和9,15进行交换此时我们任选一个即可 接下来我就统一使用找右子树最小值来写找右子树的最小值一定是根节点的左子树所以我们需要找target.left null的位置此时target为cur右子树的最小值 其中target负责找到最小值的位置targetParent负责给target擦屁股连接target的右子树 首先将target定义为cur.right,targetParent cur 然后遍历搜索树找到替换节点  然后将target位置的值给到cur targetParent.left指向target.right 记得考虑特殊情况 target一开始就没有left 所以找到替换位置后需要判断target和targetParent的位置关系 当 target在targetParent右边时需要特殊处理 删除总代码实现 public void remove(int key) {TreeNode cur root;TreeNode parent null;while (cur ! null) {if(cur.val key) {parent cur;cur cur.right;}else if(cur.val key) {parent cur;cur cur.left;}else {removeNode(cur,parent);//找到需要删除的位置return;}}}public void removeNode(TreeNode cur,TreeNode parent){if(cur.left null){if(cur root){//当根节点为删除点时root cur.right;}else if(cur parent.left){//当cur是parent的左节点parent.left cur.right;}else{//当cur是parent的右节点parent.right cur.right;}}else if(cur.right null){if(cur root) {//当根节点为删除点时root cur.left;}else if(parent.left cur){//当cur是parent的右节点parent.left cur.left;}else {//当cur是parent的左节点parent.right cur.left;}}else{TreeNode target cur.right,targetparent cur;//targetParent是为了方便替换后直接连接下一个节点while(target.left!null){targetparent target;target target.left;}cur.val target.val;//将替换值赋值给需要删除位置的值if(targetparent.right target) {//对一开始就没有left的target进行特殊处理targetparent.right target.right;}else {targetparent.left target.right;}} 1.3性能分析 插入和删除操作都必须先查找查找效率代表了二叉搜索树中各个操作的性能。 最好情况最优情况下二叉搜索树为完全二叉树其平均比较次数为log2 **n 最坏情况单分支二叉树其平均比较次数为n/2
http://www.dnsts.com.cn/news/121934.html

相关文章:

  • 青海公司网站建设哪家快wordpress最大上传2g
  • 网站刷流量有什么用WordPress禁止下载
  • 上海网站设计专注乐云seojquery 开发网站
  • 松北区建设局网站南宁重大项目签约
  • h5模板网站有哪些北京建设局投诉网站首页
  • 12306网站开发语言离我最近的广告公司在哪里
  • joomla 转 wordpress网站内容段落之间有空格对seo有影响吗
  • 织梦网站栏目管理南充公司网站建设
  • 做网站成都免费h5页面应用制作
  • 邢台手机网站建设价格电子产品去什么网站做站点
  • 产品设计排版网站怎样建立企业网站
  • 相册管理网站模板下载失败wordpress 读写分离
  • 新网站建设代理商行列资讯工程造价信息网
  • 什么网站做英语翻译练习廊坊建设部网站
  • 菜鸟式网站建设图书angular wordpress
  • 创立外包网站企业网站制作公司合肥
  • zencart 网站怎样设置自己的网站
  • 网站怎么做支付接口检查网站打开速度
  • 网站开发部门工作职责百度在线下载
  • wap网站推广方法wordpress数据库排序规则
  • 自主设计和创建网站建设云购网站
  • 国外教程 网站长沙房产交易中心官网
  • 国内有wix做的好的网站网上做中考题的网站
  • 网站 需求分析招聘广告模板
  • 上海响应式网站营销加盟网站建设
  • 网站内容包括哪些吴江区建设工程招标网站
  • 免费企业网站建设要求商城网站建设公司招聘
  • 寻找合肥网站建设免费活动策划方案的网站
  • 中国建设教育协会网站查询传奇小程序源码
  • 网站建设项目方案模板墙绘做网站推广有作用没