Leetcode刷题100天—230. 二叉搜索树中第K小的元素—day69
Posted 神的孩子都在歌唱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,null,null,1], k = 3
输出:3
提示:
- 树中的节点数为
n
。 1 <= k <= n <= 104
0 <= 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();
本人csdn博客:https://blog.csdn.net/weixin_46654114
转载说明:跟我说明,务必注明来源,附带本人博客连接。
以上是关于Leetcode刷题100天—230. 二叉搜索树中第K小的元素—day69的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题100天—98. 验证二叉搜索树( 二叉树)—day35
Leetcode刷题100天—98. 验证二叉搜索树( 二叉树)—day35
Leetcode刷题100天—700. 二叉搜索树中的搜索( 二叉树)—day34
Leetcode刷题100天—700. 二叉搜索树中的搜索( 二叉树)—day34