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

建设网站外国人可搜到怎么创建公司网站

建设网站外国人可搜到,怎么创建公司网站,详情页的五大模块,深圳网站建设 推广目录 初识二叉搜索树#xff08;BST#xff09;#xff1a; 二叉搜索树查找元素#xff1a; 二叉搜索树修改元素: 二叉搜索树中的增加元素#xff1a; 二叉搜索树中的删除元素#xff1a; 初识二叉搜索树#xff08;BST#xff09;#xff1a; 一张图简要概括二…目录 初识二叉搜索树BST 二叉搜索树查找元素 二叉搜索树修改元素: 二叉搜索树中的增加元素 二叉搜索树中的删除元素 初识二叉搜索树BST 一张图简要概括二叉搜索树 通过定义可知对于每个节点左子树的所有节点的值都比它小右子树的所有节点值都比它大我们可以很轻易的得出这颗树的最左侧叶子节点的值是最小值最右侧叶子节点的值是最大值。 那中序遍历为什么一定是有序的呢原理也很简单 我们先看看二叉树递归的图解 对于图中的二叉树中序遍历的结果是3241765。按照左子树-》根-》右子树的模式不断递归结合BST左小右大的特性那么先得到的值一定是当前树中最小的同时根是次小的最后是当前树中最大的。从底部出发向上不断回溯调用就得到了顺序的结果。 二叉搜索树查找元素 题目链接700. 二叉搜索树中的搜索 - 力扣LeetCode 题目描述 给定二叉搜索树BST的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在则返回 null 。 如果是在一颗不同的二叉树中搜索代码如下 TreeNode searchBST(TreeNode root, int target);if (root null) return null;if (root.val target) return root;// 当前节点没找到就递归地去左右子树寻找TreeNode left searchBST(root.left, target);TreeNode right searchBST(root.right, target);return left ! null ? left : right;//相当于返回叶子节点 } 其实不需要递归地搜索两边类似二分查找思想根据 target 和 root.val 的大小比较就能排除一边。我们把上面的思路稍稍改动 TreeNode searchBST(TreeNode root, int target) {if (root null) {return null;}// 去左子树搜索if (root.val target) {return searchBST(root.left, target);}// 去右子树搜索if (root.val target) {return searchBST(root.right, target);}return root;//上面两个都不满足说明root.val target直接返回root } 二叉搜索树修改元素: 无非就是先找到元素对应的位置后再修改该位置对应的值 TreeNode searchBST(TreeNode root, int target,num) {if (root null) {return null;}// 去左子树搜索if (root.val target) {return searchBST(root.left, target);}// 去右子树搜索if (root.val target) {return searchBST(root.right, target);}root.val num;//将树中对应的target值改为numreturn root;//上面两个都不满足说明root.val target直接返回root } 二叉搜索树中的增加元素 这里我们需要更改二叉搜索树的结构一旦涉及「改」就类似二叉树的构造问题函数要返回 TreeNode 类型并且要对递归调用的返回值进行接收。 TreeNode insertIntoBST(TreeNode root, int val) {// 找到空位置插入新节点if (root null) return new TreeNode(val);//这里就相当于将节点接入到二叉树对应的叶子中// if (root.val val)// BST 中一般不会插入已存在元素if (root.val val) root.right insertIntoBST(root.right, val);if (root.val val) root.left insertIntoBST(root.left, val);return root; } 二叉搜索树中的删除元素 这个问题稍微复杂跟插入操作类似先「找」再「改」先把框架写出来再说 TreeNode deleteNode(TreeNode root, int key) {if (root.val key) {// 找到啦进行删除} else if (root.val key) {// 去左子树找root.left deleteNode(root.left, key);} else if (root.val key) {// 去右子树找root.right deleteNode(root.right, key);}return root; } 找到目标节点了比方说是节点 A如何删除这个节点这是难点。因为删除节点的同时不能破坏 BST 的性质。有三种情况用图片来说明。 情况 1A 恰好是末端节点两个子节点都为空那么它可以当场去世了。 if (root.left null root.right null)return null; 情况 2A 只有一个非空子节点那么它要让这个孩子接替自己的位置。 // 排除了情况 1 之后 if (root.left null) return root.right; if (root.right null) return root.left; 情况 3A 有两个子节点麻烦了为了不破坏 BST 的性质A 必须找到左子树中最大的那个节点或者右子树中最小的那个节点来接替自己。我们以第二种方式讲解。 if (root.left ! null root.right ! null) {// 找到右子树的最小节点TreeNode minNode getMin(root.right);// 把 root 改成 minNoderoot.val minNode.val;// 转而去删除 minNoderoot.right deleteNode(root.right, minNode.val); } 三中情况都完成后整理一下代码 TreeNode deleteNode(TreeNode root, int key) {if (root null) return null;if (root.val key) {// 这两个 if 把情况 1 和 2 都正确处理了if (root.left null) return root.right;if (root.right null) return root.left;// 处理情况 3// 获得右子树最小的节点TreeNode minNode getMin(root.right);// 删除右子树最小的节点root.right deleteNode(root.right, minNode.val);// 用右子树最小的节点替换 root 节点minNode.left root.left;minNode.right root.right;root minNode;} else if (root.val key) {root.left deleteNode(root.left, key);} else if (root.val key) {root.right deleteNode(root.right, key);}return root; }TreeNode getMin(TreeNode node) {// BST 最左边的就是最小的while (node.left ! null) node node.left;return node; } 参考《labuladong算法笔记》 结语 写博客不仅仅是为了分享学习经历同时这也有利于我巩固自己的知识点总结该知识点由于作者水平有限对文章有任何问题的还请指出接受大家的批评让我改进。同时也希望读者们不吝啬你们的点赞收藏关注你们的鼓励是我创作的最大动力
http://www.zqtcl.cn/news/854572/

相关文章:

  • 福田网站制作哪家好昆山企业网站建设公司
  • wordpress快六安网站自然排名优化价格
  • 网站的线下推广怎么做的系统官网网站模板下载安装
  • 北京网站优化推广公司企业网站建设费怎么核算
  • 网站建设vps个人如何做网站推广
  • 小语种网站怎么设计网页制作公司 大连
  • 贵港市城乡住房建设厅网站菜鸟教程网站
  • 广州网站建设找哪家免费搭建网站的软件
  • 培训班管理系统 免费太原优化网站排名
  • 上海怎么做网站网站让图片充满屏幕怎么做
  • 哈尔滨营销网站建设wordpress 加载图片不显示
  • 电商网站功能结构图网站做中秋专题怎么弄
  • 深圳专业建站平台陕西省建设工程质量安全监督总站网站
  • 制作网页的网站的软件是用户反馈数据分析软件园
  • 南京 做网站seo查询网站
  • 卖高仿名牌手表网站共享wifi小程序搭建
  • c#网站开发模板想在意大利做购物网站
  • 2015做那些网站能致富60天做网站
  • 沈阳个人建站模板网站图片计时器怎么做
  • 福州定制网站开发北京排名seo
  • 地方门户网站开发方案长沙有哪个学校可以学网站建设
  • 建个购物网站水果建设网站前的市场分析
  • 建网站的目的小程序登录代码
  • 南京有名的网站建设公司自学室内装修设计教程
  • 新乡市做网站的公司开发公司简介企业介绍
  • 礼品网站模板淘宝店铺购买交易平台
  • 属于公司的网站怎么做外贸服装网站开发
  • 做暧网站泸州公司做网站
  • 做文库类网站网站所有权 备案
  • 网站开发主要内容站长之家网站查询