Leetcode 230.二叉搜索树第k小的数
Posted kexinxin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 230.二叉搜索树第k小的数相关的知识,希望对你有一定的参考价值。
二叉搜索树第k小的数
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。
说明:
你可以假设 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之路