LeetCode 230. 二叉搜索树中第K小的元素
题目描述
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。
示例 1:
输入:root = [3,1,4,null,2], k = 1
输出:1
LeetCode 230. 二叉搜索树中第K小的元素
提示:
一、解题关键词
二、解题报告
1.思路分析
2.时间复杂度
3.代码示例
/**
* 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) {
Deque<TreeNode> queue = new ArrayDeque<>();
while(root != null || !queue.isEmpty()){
while(root != null){
queue.add(root);
root = root.left;
}
root = queue.pollLast();
if(--k == 0){return root.val;}
root = root.right;
}
return - 1;
}
}
2.知识点
注意剪枝,借助其他容器,注意容器特性
本文讲解了如何使用迭代方法在二叉搜索树中找到第k小的元素,通过队列实现剪枝,介绍了关键的思路、时间复杂度分析,并提供了Java代码示例。重点在于理解如何利用二叉搜索树特性进行查找,以及优化算法以提升效率。
474

被折叠的 条评论
为什么被折叠?



