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

Leetcode刷题100天—701. 二叉搜索树中的插入操作( 二叉树)—day34

Leetcode刷题100天—701. 二叉搜索树中的插入操作( 二叉树)—day34