题目

https://leetcode.com/problems/kth-smallest-element-in-a-bst/

题解

方法1:中序遍历+剪枝

import java.util.ArrayList;
import java.util.List;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 {List<Integer> list;int k;public int kthSmallest(TreeNode root, int k) {list = new ArrayList<>();this.k = k;inOrder(root);return list.get(k - 1);}public void inOrder(TreeNode node) {if (node == null) return;inOrder(node.left);list.add(node.val);if (list.size() >= k) return; // 剪枝,及时停止,不需要走完整棵树inOrder(node.right);}
}

方法2:Iterative Inorder Traversal

参考:https://leetcode.com/problems/kth-smallest-element-in-a-bst/solution/
The above recursion could be converted into iteration, with the help of stack. This way one could speed up the solution because there is no need to build the entire inorder traversal, and one could stop after the kth element.

class Solution {public int kthSmallest(TreeNode root, int k) {LinkedList<TreeNode> stack = new LinkedList<TreeNode>();while (true) {while (root != null) {stack.add(root);root = root.left;}root = stack.removeLast();if (--k == 0) return root.val;root = root.right;}}
}

leetcode 230. Kth Smallest Element in a BST | 230. 二叉搜索树中第K小的元素(Java)相关推荐

  1. LeetCode 230. 二叉搜索树中第K小的元素(中序遍历)

    文章目录 1. 题目信息 2. 解题 2.1 中序递归 2.2 中序循环写法 1. 题目信息 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 说明: 你可以 ...

  2. 【LeetCode】230#二叉搜索树中第K小的元素

    题目描述 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数. 示例 1: 输入: ro ...

  3. LeetCode实战:二叉搜索树中第K小的元素

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a bin ...

  4. leetcode 378. Kth Smallest Element in a Sorted Matrix | 378. 有序矩阵中第 K 小的元素(小根堆)

    题目 https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/ 题解 套了下小根堆模板. class Solutio ...

  5. LeetCode 230二叉搜索树中第k小的元素

    思路: ※一.中序遍历,找第k个元素 class Solution { public:vector<int>res;void inorder(TreeNode *root){if(root ...

  6. 73. Leetcode 230. 二叉搜索树中第K小的元素 (二叉搜索树-中序遍历类)

    给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数).示例 1:输入:root = [3,1,4,null,2], k = 1 输出 ...

  7. 【Leetcode | 49】230. 二叉搜索树中第K小的元素

    给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数. 示例 1: 输入: root = ...

  8. LeetCode 230. 二叉搜索树中第K小的元素(递归)

    题目描述 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数. 思路 详见链接 代码 c ...

  9. 力扣题目——230. 二叉搜索树中第K小的元素

    注:本文的代码实现使用的是 JS(JavaScript),为前端中想使用JS练习算法和数据结构的小伙伴提供解题思路. 描述 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查 ...

最新文章

  1. mysql/mariadb:数据库变量(参数)管理
  2. Spring-bean的作用域
  3. docker环境下solr6.0配置(中文分词+拼音)
  4. 1313 质因数分解 2012年NOIP全国联赛普及组
  5. C#——《C#语言程序设计》实验报告——面向对象程序设计——字符串加密
  6. C基础 redis缓存访问
  7. Difference: throw or throw ex?
  8. 华为新出的鸿蒙,华为发出新计划:2021年完成3亿鸿蒙用户,你会给你手机尝试吗...
  9. MySQL源码解读之数据结构-LF_DYNARRAY
  10. 飞鸽传书下载,还是飞鸽传书下载
  11. SQLServer通过链接服务器调用Oracle 存储过程
  12. facade模式 java_Java设计模式之外观模式(Facade模式)介绍
  13. Windows 10 开启代理软件代理流量之后,系统的某些自带软件无法联网
  14. 微信公众号采集之免费采集公众号爆文工具
  15. 搜索引擎提交入口总结
  16. 家用路由器设置虚拟服务器,家用路由器设置虚拟服务器
  17. 【微信公众号】微信扫一扫,条形码/一维码,二维码功能解析
  18. POJ 1723 SOLDIERS
  19. ScrollMagic结合TweenMax的Demo
  20. EXCEL数组公式求解一定条件下的最大值及最小值

热门文章

  1. URAL - 1297 Palindrome(后缀数组+RMQ)
  2. (转)二维平面坐标系-最近点对模板
  3. HDU - 3085 Nightmare Ⅱ(双向bfs)
  4. wpf 开源框架_.NET Core跨平台基础框架:10 篇热文汇总
  5. SAGPool图分类
  6. 动态规划算法-05KSum问题
  7. js中同时得到整数商及余数_js和vue实现时分秒倒计时的方法
  8. 外挂学习之路(6)--- 选怪call
  9. EV3 直接命令 - 第 4 课 用两个驱动轮精确地移动小车
  10. 聚美app之 _sign参数分析