Leetcode 230.二叉搜索树第k小的数

Posted kexinxin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 230.二叉搜索树第k小的数相关的知识,希望对你有一定的参考价值。

二叉搜索树第k小的数

给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 个最小的元素。

说明:
你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。

示例 1:

输入: root = [3,1,4,null,2], k = 1

3

/

1 4

  2

输出: 1

示例 2:

输入: root = [5,3,6,2,4,null,null,1], k = 3

5

/

3 6

/

2 4

/

1

输出: 3

进阶:
如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化 kthSmallest 函数?

 

提示让用BST的性质来,那就是BST数值大小是:左<根<右,用中序遍历所有的节点就会得到一个有序数组,如果只求第k小的数,还可以用一个计数器记录已经遍历的节点数,只遍历到第k个节点返回即可。

 

 1 class Solution {
 2 
 3     List<Integer> list=new ArrayList<Integer>();
 4     public int kthSmallest(TreeNode root, int k) {
 5         IBTS(root);
 6         return list.get(k-1);
 7     }
 8 
 9     public void IBTS(TreeNode root){
10         if(root==null) return;
11         IBTS(root.left);
12         list.add(root.val);
13         IBTS((root.right));
14     }
15 }

 



以上是关于Leetcode 230.二叉搜索树第k小的数的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode练习(Python):二分查找类:第230题:二叉搜索树中第K小的元素:给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k

230 二叉搜索树中第K小的元素[二叉搜索树 中序遍历 栈] HERODING的LeetCode之路

LeetCode——230. 二叉搜索树中第K小的元素

leetcode打卡--230. 二叉搜索树中第K小的元素

LeetCode 230. 二叉搜索树中第K小的元素 (平衡树)

leetcode 230二叉搜索树中第k小的元素