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

怎样做好网站建设设计怎么建立一个网站搜关键词会跳出

怎样做好网站建设设计,怎么建立一个网站搜关键词会跳出,天津信息港,自己做网站可以揽业务吗文章目录 一、搜索树二、使用代码实现一棵二叉搜索树1.查找2.插入3.删除#xff08;重点#xff09; 总结 一、搜索树 二叉搜索树又称二叉排序树#xff0c;它或者是一棵空树#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空#xff0c;则左子树上所有节点的值… 文章目录 一、搜索树二、使用代码实现一棵二叉搜索树1.查找2.插入3.删除重点 总结 一、搜索树 二叉搜索树又称二叉排序树它或者是一棵空树或者是具有以下性质的二叉树: 若它的左子树不为空则左子树上所有节点的值都小于根节点的值 若它的右子树不为空则右子树上所有节点的值都大于根节点的值 它的左右子树也分别为二叉搜索树 仔细观察上图可以发现二叉搜索树的一个特性 中序遍历二叉搜索树是有序的所以二叉搜索树也被称为二叉排序树 二、使用代码实现一棵二叉搜索树 1.查找 遍历这棵树先从树的根节点开始查找如果树的根节点是我们要查找的元素就返回根节点如果要查找的元素比我们的根节点小就去树的左边寻找如果比我们的根节点大就去树的右边寻找直到遍历完整棵树为止 代码如下 public boolean search(int val) {TreeNode cur root;while (cur ! null) {//左树中去找if(cur.val val) {cur cur.left;//右树中去找}else if(cur.val val) {cur cur.right;}else {return true;}}return false;}2.插入 往二叉搜索树插入一个元素的时候我们要注意两点首先如果二叉搜索树为空则直接令 root 为当前插入的节点即可如果不为空则新的元素会依次与节点比较如果比根节点大则去根的右边比根节点小则去根的左边 首先定义一个 cur 引用当 cur 等于 null 了则表示是我要插入的位置找到了要插入的位置我们还得知道这个位置的父亲节点是谁通过父亲节点将元素插入到该二叉树中 代码如下 public void insert(int val) {if(root null) {root new TreeNode(val);return;}TreeNode cur root;//记录cur的上一个节点TreeNode parent null;while (cur ! null) {if(cur.val val) {parent cur;cur cur.right;}else if(cur.val val) {parent cur;cur cur.left;}else {return;}}//cur为空 将val插入到parent的左树或者右树TreeNode node new TreeNode(val);if(parent.val val) {parent.left node;}else {parent.right node;}}3.删除重点 二叉搜索树中删除一个元素是很麻烦的我们要把每一种情况都列举出来而且在删除完一个元素后还要满足二叉搜素树的性质 设 cur 为要删除的元素parent为待删除结点的双亲结点为首先我们要判断这个二叉搜索树中是否存在要删除的节点这个方法在上面已经写过了找到要删除的节点后再对每一种情况进行删除 1.cur没有左子树 cur 是 root则 root cur.right cur 不是 rootcur 是 parent.left则 parent.left cur.right cur 不是 rootcur 是 parent.right则 parent.right cur.right 图解如下 2.cur没有右子树 cur 是 root则 root cur.left cur 不是 rootcur 是 parent.left则 parent.left cur.left cur 不是 rootcur 是 parent.right则 parent.right cur.left 图解如下 3.cur既有左子树又有右子树 使用替换法进行删除即在 cur 的右子树中一直往左寻找最小的元素将这个最小值赋值给要删除节点的 val 值中接着把这个最小元素的节点删除即可 图解如下 代码如下 public void remove(int val) {TreeNode cur root;TreeNode parent null;while (cur ! null) {if(cur.val val) {parent cur;cur cur.right;}else if(cur.val val) {parent cur;cur cur.left;}else {removeNode(parent,cur);return;}}}private void removeNode(TreeNode parent,TreeNode cur) {//左树为空if(cur.left null) {if(cur root) {root cur.right;}else if(cur parent.left) {parent.left cur.right;}else {parent.right cur.right;}//右树为空}else if(cur.right null) {if(cur root) {root cur.left;}else if(cur parent.left) {parent.left cur.left;}else {parent.right cur.left;}//两个都不为空 使用替换法的方式来删除节点}else {TreeNode t cur.right;TreeNode tp cur;while (t.left ! null) {tp t;t t.left;}cur.val t.val;if(tp.left t) {tp.left t.right;}else {tp.right t.right;}}}总结 插入和删除操作都必须先查找查找效率代表了二叉搜索树中各个操作的性能。 对有n个结点的二叉搜索树若每个元素查找的概率相等则二叉搜索树平均查找长度是结点在二叉搜索树的深度的函数即结点越深则比较次数越多 二叉搜索树在最好的情况下为完全二叉树查找的平均比较次数为logn 二叉搜索树在最差的情况下退化成但分支查找的平均比较次数为n/2 注意 二叉搜索树不要求是完全二叉树或满二叉树甚至会出现单分支的二叉搜索树所以针对这种特殊的情况进行了优化也就延申出了 AVL树当发现二叉搜索树左右子树高度差太大会自动旋转以致平衡避免旋转的次数太多又引入了红黑树给节点增加了颜色细节部分后期讲解这里有个概念即可
http://www.pierceye.com/news/553471/

相关文章:

  • 哪些网站可以做调查赚钱图片生成软件
  • 网站空间的管理wordpress vip system
  • 新思维网站北京住房建设部网站首页
  • 温州网站制作套餐麒麟网站建设
  • 淘宝接单做网站wordpress能做企业网站吗
  • 网站建设运营公众号运营合同app网站开发书籍下载
  • 网站seo流程网站开发开账务处理
  • 婚介网站方案长沙网络公司电话
  • 自助网站搭建系统做网站接电话一般要会什么
  • 雷州网站建设公司网站建设与管理说课ppt
  • 问答类网站怎么做wordpress 调取页面缩略图
  • 做电影资源网站手机版wordpress实例配置
  • 广西网站建设方案品牌官网方案
  • 游戏工作室网络组建方案seo81
  • 搭建个人网站的步骤温州专业微网站制作价格
  • 网站怎么做充值系统php图书管理系统网站开发
  • 多商家网站建设自助建站系统源码 资源网
  • 广州番禺网站制作公司哪家好文章网站建设
  • 漯河网站建设e辽宁身营商环境建设局网站
  • 营销网站建设套餐企业信息公示管理系统
  • 网站布局设计排版网站外部链接做多少合适呢
  • 成品网站 源码1688上海网站建设 找德华专业
  • 网站建设费用申报佛山电脑培训班哪里有
  • 免费网站服务器厦门网站建设推广哪家好
  • 青海海东平安县建设局网站如何建设旅游网站
  • 成都响应式网站开发百度里面的站长工具怎么取消
  • 手机购物网站设计广告设计有限公司
  • 新手制作网站wordpress lamp 教程
  • 响应式的网站做优化好吗wordpress删掉自豪
  • 做网站第一步创建网站根目录