LeetCode Kth Smallest Element in a BST

本文介绍了一种寻找二叉搜索树中第K小元素的方法,通过中序遍历利用二叉搜索树的特性,实现高效查找,并提供了一个具体的Java实现案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

Given a binary search tree, write a function kthSmallest to find the kth smallest element in it.

Note: 

You may assume k is always valid, 1 ≤ k ≤ BST's total elements.
What if the BST is modified (insert/delete operations) often and you need to find the kth smallest frequently? How would you optimize the kthSmallest routine?
  1. Try to utilize the property of a BST.
  1. What if you could modify the BST node's structure?
  1. The optimal runtime complexity is O(height of BST).
题意: Follow up: Hint: 给一棵二叉排序树,然后求第K小的节点的值。首先要理解BST,二叉搜索树,就是指一棵树的左子树节点一定小于跟节点,右子树节点一定小于根节点。那么既然要求第K小的节点,那么就可以利用二叉搜索树的特征,考虑用中序遍历,就可以得到按照从小到大排列的数组,然后就是得到第K小的值。

<span style="font-size:14px;">public class Solution 
{
    List<Integer> list = new ArrayList<Integer>();
	public int kthSmallest(TreeNode root,int k)
	{
		dfs(root);
		//Collections.reverse(list);
		System.out.println(list.size());
		return list.get(k-1).intValue();
	}
	public void dfs(TreeNode root)
	{
		if(root == null)
		   return;
		else           //这里一定要来一个else
		{
		    if(root.left != null)
		        dfs(root.left);
		    list.add(root.val);
		    if(root.right != null)
		        dfs(root.right);
		}
	}
}</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值