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

自媒体网站程序国家企业信息系统公示网 (全国)

自媒体网站程序,国家企业信息系统公示网 (全国),深圳移动网站建设制作公司,莱芜论坛话题目录 题目描述:230. 二叉搜索树中第K小的元素(中等)题目接口解题思路代码 PS: 题目描述:230. 二叉搜索树中第K小的元素(中等) 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你…

目录

  • 题目描述:230. 二叉搜索树中第K小的元素(中等)
    • 题目接口
    • 解题思路
    • 代码
  • PS:

题目描述:230. 二叉搜索树中第K小的元素(中等)

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。

LeetCode做题链接:LeetCode-两数之和

示例 1:
在这里插入图片描述

输入:root = [3,1,4,null,2], k = 1
输出:1

示例 2:
在这里插入图片描述

输入:root = [5,3,6,2,4,null,null,1], k = 3
输出:3

提示:

树中的节点数为 n 。
1 <= k <= n <= 104
0 <= Node.val <= 104

进阶: 如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化算法?

题目接口

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public int kthSmallest(TreeNode root, int k) {}
}

解题思路

  1. 创建一个ArrayList用于存储中序遍历的结果。中序遍历是一种二叉树的遍历方式,顺序为左子树-根节点-右子树。这种遍历方式可以得到一个升序的序列。
  2. 定义一个方法kthSmallest,输入参数为二叉树的根节点和整数k,返回二叉树中第k小的元素。在这个方法中,首先调用dfs方法对二叉树进行中序遍历,将结果存储在list中。然后返回list中第k-1个元素,因为数组下标从0开始,而题目要求的k是从1开始的。
  3. 定义一个方法dfs,输入参数为二叉树的节点,递归地对该节点的左子树和右子树进行中序遍历。在这个方法中,首先判断当前节点是否为空,如果为空则直接返回。然后递归地对左子树进行中序遍历,将遍历得到的结果存储在list中。接着将当前节点的值添加到list中,最后递归地对右子树进行中序遍历。

通过这种方式,我们可以在O(n)的时间复杂度内找到二叉搜索树中第k小的元素,其中n是二叉树的节点数。

代码

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {// 创建一个ArrayList用于存储中序遍历的结果ArrayList<Integer> list = new ArrayList<>();// 定义一个方法,输入参数为二叉树的根节点和整数k,返回二叉树中第k小的元素public int kthSmallest(TreeNode root, int k) {// 先对二叉树进行中序遍历,将结果存储在list中dfs(root);// 返回list中第k-1个元素,因为数组下标从0开始,而题目要求的k是从1开始的return list.get(k - 1);}// 定义一个方法,输入参数为二叉树的节点,递归地对该节点的左子树和右子树进行中序遍历public void dfs(TreeNode root) {// 如果当前节点为空,直接返回if (root == null) {return;}// 递归地对左子树进行中序遍历dfs(root.left);// 将当前节点的值添加到list中list.add(root.val);// 递归地对右子树进行中序遍历dfs(root.right);}
}

PS:

感谢您的阅读!如果您觉得本篇文章对您有所帮助,请给予博主一个喔~

http://www.lakalapos1.cn/news/335/

相关文章:

  • 如何修改单页网站专业制作外贸网站
  • asp做的药店网站模板网站设计原则的历史
  • 站长工具官网查询公司变更地址需要多少钱
  • 做网站电脑开一天用多少钱口碑营销方案怎么写
  • 自己怎样做淘客网站写安卓软件用什么工具
  • 教育网站制作视频全屏自适应网站模板
  • 婚纱摄影的网站怎么做产品推广网站模板
  • 河南网站公司国内比较大的源码网站
  • 个人做网站犯法吗国家住房与城乡建设部网站
  • 公司做网站多海外网页
  • 微网站制作平台哪个好找段子的各大网站
  • 无锡网站建设选众鼎wordpress 杂志
  • 龙岗做网站公司哪家好word可以做网页吗m
  • 网页代理网站交互型网站开发
  • 网站怎么做链接the7.3 wordpress
  • 网站建设及维护服务器seo网站建设接单
  • 宜昌建网站做网站用的云控制台
  • 做网站美工的前途怎么样大地影院资源免费观看视频
  • 莆田系医院的网站用什么做的网站seo排名
  • 个人网站建设营销推广电动车网站建设
  • 自已做个网站怎么做青海西宁网站开发公司
  • 手机版百度入口seo与网站优化
  • 合肥网站公司哪家好wordpress get_tag
  • 国外做科研的网站网页设计网站网站建设课程设计
  • 网站空间大小怎么看湛江专业自助建站详细解读
  • 肃宁做网站学校网站建设制度
  • 店铺销售系统软件哪个好优化核心系列网站
  • 网站建立时间查询好的做网站
  • 南宁网站建设 醉懂网络沈阳祥云医院男科怎么样
  • 凤阳网站建设哪家好cms建站系统