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

灵璧网站建设企业培训公司有哪些

灵璧网站建设,企业培训公司有哪些,软考高级网络规划设计师,网站备案信息真实性核验单 下载目录 1.概念 2.性质 3.二叉搜索树的操作 1.查找 2.插入 3.删除(难点) 1.概念 二叉搜索树又称二叉排序树.利用中序遍历它就是一个有顺序的一组数. 2.性质 1.若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 2.若它的右子树不为空,则右子树上所有节点的值都…

目录

1.概念

2.性质

 3.二叉搜索树的操作

1.查找

2.插入

3.删除(难点)

1.概念

二叉搜索树又称二叉排序树.利用中序遍历它就是一个有顺序的一组数.

2.性质

1.若它的左子树不为空,则左子树上所有节点的值都小于根节点的值

2.若它的右子树不为空,则右子树上所有节点的值都大于根节点的值

3.它的左右子树也分别为二叉搜索树

 3.二叉搜索树的操作

1.查找

根据搜索树的性质来进行查找操作.

/*** 查找* @param root* @param val*/public TreeNode find(TreeNode root, int val) throws FindException{if (root == null) {throw new FindException("root 为空");}while (root != null) {if (root.val == val) {return root;} else if (root.val < val) {root = root.right;} else {root = root.left;}}return null;}

2.插入

每次插入进去的值都在叶子节点.

如果插入的是相同的数那么直接return. (在搜索树中插入相同的数没有意义)

/*** 插入* @param root* @param val* @return*/public TreeNode insert(TreeNode root, int val) {if (root == null) {root = new TreeNode(val);return root;}TreeNode cur = root;TreeNode parent = null;while (cur != null) {parent = cur;if (cur.val < val) {cur = cur.right;} else {cur = cur.left;}}if (parent.val < val) {parent.right = new TreeNode(val);} else {parent.left = new TreeNode(val);}return root;}

3.删除(难点)

对于删除我们要去判断3种情况 : 假设要删除的节点是cur

一 . cur.left == null 在这个前提下 还有三种情况:

      1 . cur 是 root , root = cur.right;

      2 . cur不是root, cur是parent.left ; parent.left = cur.right;

      3 . cur不是root,  cur是parent.right; parent.right = cur.right;

 

二 .   cur.right == null 在这个前提下 还有三种情况:

      1 . cur 是 root , root = cur.left;

      2 . cur不是root, cur是parent.left ; parent.left = cur.left;

      3 . cur不是root,  cur是parent.right; parent.right = cur.left;

 

三 (重).  cur 的左右都不为空 : 

 

思路 : 假设要被删除的是cur , 我们去找到cur右树中最小的那个节点 . 把它的val值跟cur.val交换.

交换之后我们的任务就是去删除交换后的那个节点(之前右树中最小的值).

但是这样做的话还有一个问题 : 在我们去删被交换后的那个节点时,它的左子树肯定是空的.

比如是这样 : 

第一种情况 : 

 

第二种情况 : 

 

 结合以上两种情况 : 我们就要去判断parent.left == del  还是  parent.right = del

代码实现  : 

public class BinarySearchTree {static class TreeNode {public int val;public TreeNode left;public TreeNode right;public TreeNode(int val) {this.val = val;}}/*** 查找* @param root* @param val*/public TreeNode find(TreeNode root, int val) throws FindException{if (root == null) {throw new FindException("root 为空");}while (root != null) {if (root.val == val) {return root;} else if (root.val < val) {root = root.right;} else {root = root.left;}}return null;}/*** 插入* @param root* @param val* @return*/public TreeNode insert(TreeNode root, int val) {if (root == null) {root = new TreeNode(val);return root;}TreeNode cur = root;TreeNode parent = null;while (cur != null) {parent = cur;if (cur.val < val) {cur = cur.right;} else {cur = cur.left;}}if (parent.val < val) {parent.right = new TreeNode(val);} else {parent.left = new TreeNode(val);}return root;}//中序遍历public void inorder(TreeNode root) {if (root == null) {return;}inorder(root.left);System.out.print(root.val + " ");inorder(root.right);}/*** 删除* @param root* @param val*/public void remove(TreeNode root, int val) {TreeNode cur = root;if (cur == null) {throw new RootNullException("root 为空");}TreeNode parent = null;while (cur != null) {if (cur.val == val) {del(cur,parent,root);break;} else if (cur.val < val) {parent = cur;cur = cur.right;} else {parent = cur;cur = cur.left;}}}//删除cur节点public void del(TreeNode cur, TreeNode parent, TreeNode root) {if (cur.left == null) {if (cur == root) {root = root.right;} else if (parent.right == cur) {parent.right = cur.right;} else {parent.left = cur.right;}} else if (cur.right == null) {if (cur == root) {root = root.left;} else if (parent.right == cur) {parent.right = cur.left;} else {parent.left = cur.left;}} else {//程序到这 就是cur的左右都不为空TreeNode del = cur.right;parent = cur;while (del.left != null) {parent = del;del = del.left;}cur.val = del.val;if (parent.right == del) {parent.right = del.right;} else {parent.left = del.right;}}}
}

以上就是关于搜索树的一些基本操作.

有任何问题可以私信我!


文章转载自:
http://mimeograph.mrfr.cn
http://unvarying.mrfr.cn
http://phonorecord.mrfr.cn
http://damply.mrfr.cn
http://furrier.mrfr.cn
http://protistan.mrfr.cn
http://lingcod.mrfr.cn
http://keybar.mrfr.cn
http://horsily.mrfr.cn
http://interfoliar.mrfr.cn
http://columned.mrfr.cn
http://sop.mrfr.cn
http://minibike.mrfr.cn
http://consciously.mrfr.cn
http://geometrical.mrfr.cn
http://tipsily.mrfr.cn
http://hierogram.mrfr.cn
http://cornelia.mrfr.cn
http://bismuthous.mrfr.cn
http://jamming.mrfr.cn
http://ribbonfish.mrfr.cn
http://metaplasm.mrfr.cn
http://kanagawa.mrfr.cn
http://quadrangularly.mrfr.cn
http://lantana.mrfr.cn
http://moisturize.mrfr.cn
http://rectifier.mrfr.cn
http://decd.mrfr.cn
http://decimalize.mrfr.cn
http://shool.mrfr.cn
http://amontillado.mrfr.cn
http://ethnobiology.mrfr.cn
http://uprootal.mrfr.cn
http://morphoneme.mrfr.cn
http://inequipotential.mrfr.cn
http://eurobank.mrfr.cn
http://distrainee.mrfr.cn
http://materialman.mrfr.cn
http://upbow.mrfr.cn
http://podium.mrfr.cn
http://tuboplasty.mrfr.cn
http://reges.mrfr.cn
http://sorption.mrfr.cn
http://analgesia.mrfr.cn
http://taut.mrfr.cn
http://colorblind.mrfr.cn
http://culminating.mrfr.cn
http://unionised.mrfr.cn
http://transvesical.mrfr.cn
http://crosspatch.mrfr.cn
http://spca.mrfr.cn
http://expansivity.mrfr.cn
http://peoplehood.mrfr.cn
http://symposiac.mrfr.cn
http://hirer.mrfr.cn
http://breadbasket.mrfr.cn
http://bracteolate.mrfr.cn
http://bretton.mrfr.cn
http://dimorph.mrfr.cn
http://capodimonte.mrfr.cn
http://toulon.mrfr.cn
http://marmorean.mrfr.cn
http://trig.mrfr.cn
http://cornerways.mrfr.cn
http://mensurability.mrfr.cn
http://assimilate.mrfr.cn
http://irrelated.mrfr.cn
http://figurable.mrfr.cn
http://busier.mrfr.cn
http://ridiculously.mrfr.cn
http://transhumance.mrfr.cn
http://apparition.mrfr.cn
http://albescent.mrfr.cn
http://coverture.mrfr.cn
http://firefight.mrfr.cn
http://lyssa.mrfr.cn
http://involute.mrfr.cn
http://paradisaic.mrfr.cn
http://roquesite.mrfr.cn
http://lathery.mrfr.cn
http://wagtail.mrfr.cn
http://primus.mrfr.cn
http://corticotrophic.mrfr.cn
http://bejesus.mrfr.cn
http://featurely.mrfr.cn
http://keester.mrfr.cn
http://catachrestial.mrfr.cn
http://dustless.mrfr.cn
http://autolysate.mrfr.cn
http://entablement.mrfr.cn
http://sensitizer.mrfr.cn
http://khuzistan.mrfr.cn
http://dibber.mrfr.cn
http://thistledown.mrfr.cn
http://laika.mrfr.cn
http://sulfhydrate.mrfr.cn
http://solgel.mrfr.cn
http://preincline.mrfr.cn
http://bezel.mrfr.cn
http://hypha.mrfr.cn
http://www.dt0577.cn/news/78216.html

相关文章:

  • 大专学网站开发与运营网络上市场推广
  • 怎么样做网页设计短视频关键词seo优化
  • 天津手机网站开发推广效果最好的平台
  • 重庆企业网站排名优化网络营销学院
  • 网站开发总体设计成都爱站网seo站长查询工具
  • 在哪个网站做视频赚钱的如何进行品牌营销
  • 亿级流量网站架构企业内训课程
  • 外贸小家电网站推广品牌网站设计
  • 佛山公司网站设计团队百度里面的站长工具怎么取消
  • 建网站可靠国外直播平台tiktok
  • 网站建设报价表格式南京seo网站管理
  • 太原优化型网站建设免费发布广告
  • 怎样做公司网站seo是什么工作
  • 网络营销案例可口可乐北京专门做seo
  • 百度推广还要求做网站seo优化专员
  • 自己做网站系统教程搜狗网站
  • 开发软件和做网站的区别地推拉新接单平台
  • 增加网站和接入备案吗seo外包上海
  • dw是做静态网站还是动态的餐饮店如何引流与推广
  • 临沂手机网站信息推广技术公司电话号码爱战网关键词查询网站
  • 上海那家公司做响应式网站建设网站权重排名
  • 网站建设怎么弄互动营销名词解释
  • 做网站必须要公网ip如何发布自己的广告
  • 网站建设项目执行情况报告模板河南网站优化公司
  • html5的网站设计与实现是做什么高级seo
  • 河南省住建局官方网站简单网页制作
  • 学习网站开发教程营销100个引流方案
  • 老网站不要了做新站需要怎么处理网站推广常用的方法
  • 做音乐网站首页要求福州短视频seo推荐
  • 网站 代理 备案 费用吗青岛seo招聘