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

电商平台设计电商网站建设最新军事新闻最新消息

电商平台设计电商网站建设,最新军事新闻最新消息,宿迁房产网王东升,郑州 网站制作二分查找与二叉树的中序遍历青铜挑战 二分查找 二分查找(Binary Search)是一种在已排序的数组中查找某个特定元素的算法。通过每次将查找范围缩小一半来提高查找效率,时间复杂度为 O(log n)。 而传统的顺序查找,必须要遍历查找…

二分查找与二叉树的中序遍历青铜挑战

二分查找

二分查找(Binary Search)是一种在已排序的数组中查找某个特定元素的算法。通过每次将查找范围缩小一半来提高查找效率,时间复杂度为 O(log n)。

而传统的顺序查找,必须要遍历查找范围:

public int search(int[] array, int key){for (int i = 0; i < array.length; i++) {if(array[i] == key){return i;}}return -1;}
  • 二分查找每次将查找的范围一分为二,比较目标值与当前中间值的大小,从而确定是在左半部分还是右半部分继续查找。
  • 如果找到目标值,返回其索引。如果找不到,返回 -1。
public class BinarySearch {public static int binarySearch(int[] arr, int target) {int left = 0;int right = arr.length - 1;while (left <= right) {int mid = left + (right - left) / 2;// 防止溢出if (arr[mid] == target) {return mid;} else if (arr[mid] > target) {right = mid - 1;} else {left = mid + 1;}}return -1;}public static void main(String[] args) {int[] arr = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};int target = 7;int result = binarySearch(arr, target);if (result != -1) {System.out.println("目标值 " + target + " 在索引 " + result + " 位置");} else {System.out.println("目标值 " + target + " 不存在于数组中");}}
}

二分查找与二叉树的中序遍历白银挑战

二分查找在搜索树中的应用

二叉搜索树中的搜索

leetcode700

给定二叉搜索树(BST)的根节点 root 和一个整数值 val

你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。

可以通过二叉搜索树的性质来高效地查找节点。二叉搜索树有一个特点:对于每个节点,左子树的值都小于该节点的值,右子树的值都大于该节点的值。因此,我们可以根据给定的值与当前节点值的比较来决定接下来是向左子树还是向右子树查找。

  • 如果当前节点值等于给定的值 val,则返回该节点。
  • 如果当前节点值大于 val,则在左子树中查找。
  • 如果当前节点值小于 val,则在右子树中查找。
  • 如果遍历到 null,则返回 null,表示没有找到该节点。
class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val = x; }
}public class SearchBST {public TreeNode searchBST(TreeNode root, int val){if (root == null || root.val == val) {return root;}if (val < root.val) {return searchBST(root.left, val);} else {return searchBST(root.right, val);}}
}

验证二叉树是否是二叉搜索树

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

有效二叉搜索树定义如下:

节点的左子树只包含 小于 当前节点的数。

节点的右子树只包含 大于 当前节点的数。

所有左子树和右子树自身必须也是二叉搜索树。

解法:

判断二叉树是否是有效的二叉搜索树(BST)通常可以通过递归来实现。要保证每个节点满足 BST 的特性,我们需要确保每个节点的值都在其合法的范围内。具体步骤如下:

  • 递归的基本思想:对于当前节点,要求其左子树所有节点的值小于当前节点的值,右子树所有节点的值大于当前节点的值。同时,左子树和右子树必须分别是合法的二叉搜索树。
  • 利用上下界:每个节点的值都有一个合法范围,可以用一个递归函数来表示,每次递归时,传递给子树的合法值范围。
  • 递归出口:如果当前节点为空(即没有子树),那么它一定是合法的二叉搜索树,返回 true
class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val = x; }
}public class IsValidBST {public boolean isValidBST(TreeNode root) {return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);}private boolean isValidBST(TreeNode node, long min, long max) {if (node == null) {return true;}if (node.val <= min || node.val >= max) {return false;}return isValidBST(node.left, min, node.val) && isValidBST(node.right, node.val, max);}
}

解释:

  • isValidBST 方法:调用 isValidBST 方法时,传入的是 root 节点以及初始的范围 Long.MIN_VALUELong.MAX_VALUE,代表所有节点的值必须在这个范围内。
  • isValidBST (TreeNode node, long min, long max):这是递归检查每个节点是否符合 BST 的条件。对于每个节点,检查它的值是否在 minmax 之间。如果不在这个范围内,返回 false。然后递归地检查它的左子树和右子树,更新合法的范围:
    • 对于左子树,新的合法范围是 min 到当前节点的值(node.val)。
    • 对于右子树,新的合法范围是 node.valmax

时间复杂度&空间复杂度

  • 时间复杂度为 O(n),其中 n 是二叉树中的节点数。每个节点都只访问一次。
  • 空间复杂度:最坏情况下,递归的深度是 O(h),其中 h 是树的高度。如果树是完全平衡的,h = log n;如果树是链式结构的,h = n。所以空间复杂度为 O(h)。
http://www.dtcms.com/wzjs/160564.html

相关文章:

  • 知识付费网站源码下载东莞今天新增加的情况
  • 平台电商网站开发国际新闻界期刊
  • php 可以自己做网站吗广州推广引流公司
  • 东莞网站设计哪家强舆情报告范文
  • 做淘宝网站需要什么河南关键词排名顾问
  • wordpress 模板获取数据seo快速整站上排名教程
  • 钓鱼网站 企业形象郑州粒米seo顾问
  • 网站维护的方式包括企业网络营销策划案
  • 爱站网影视排行榜搜索引擎成功案例分析
  • wordpress打开置顶文章没用天津企业seo
  • 网站建设费和网站维护费的区别aso优化技术
  • 重庆如何做聚政网站软文写作的十大技巧
  • 做网站用什么主机操作系统seo排名优化工具
  • 湖北做网站多少钱珠海做网站的公司
  • 软件开发模型的种类昆明百度关键词优化
  • 服务器可以做自己网站用吗人员优化方案怎么写
  • 苏州网站设计kgwl上海网站建设联系方式
  • 网站模板开发平台怎么做营销策略包括哪些内容
  • 电脑做ppt如何插入网站台州专业关键词优化
  • 胶州市城乡建设局网站网站宣传
  • 怎样建公司网站百度竞价员
  • 设计比较好的电商网站百度推广方案怎么写
  • 公司用wordpress沈阳seo关键词排名
  • 有没有帮别人做创意的网站搜索引擎优化特点
  • 网站排队队列怎么做百度问问首页
  • 怎么对自己做的网站进行加密今天重大新闻头条新闻
  • 做网站廊坊外贸网站平台都有哪些
  • 品质好的人如何优化关键词搜索
  • 长沙模板建站哪家好济南谷歌推广
  • 群晖做网站域名专业推广引流团队