Leetcode刷题100天—230. 二叉搜索树中第K小的元素—day69
【摘要】 前言:这解法有点拉胯仅供参考作者:神的孩子在歌唱一个努力学算法的小菜鸡大家好,我叫智 230. 二叉搜索树中第K小的元素难度中等541给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。示例 1:输入:root = [3,1,4,null,2], k = 1输出:1示例 2:输入:root = [5,3,6,2,4,nul...
前言:这解法有点拉胯仅供参考
作者:神的孩子在歌唱
一个努力学算法的小菜鸡
大家好,我叫智
230. 二叉搜索树中第K小的元素
难度中等541
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。
示例 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 <= 1040 <= Node.val <= 104
**进阶:**如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化算法?
package 二叉树;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Queue;
/*
* https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst/
* 求第k个最小元素用优先队列
*/
public class _230_二叉搜索树中第K小的元素 {
public int kthSmallest(TreeNode root, int k) {
// 创建优先队列
PriorityQueue<Integer> queue= new PriorityQueue<>();
// 定义队列
Queue<TreeNode> queue2= new LinkedList<TreeNode>();
// 定义指针
// TreeNode node=root;
queue2.add(root);
while(!queue2.isEmpty()) {
TreeNode node=queue2.poll();
queue.add(node.val);
if (node.left!=null) {
queue2.add(node.left);
}
if (node.right!=null) {
queue2.add(node.right);
}
}
while(k--!=1) {
queue.poll();
}
return queue.peek();
}
}
转载说明:跟我说明,务必注明来源,附带本人博客连接。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)