码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-12-31 20:21:36      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:code   假设   操作   get   public   ==   node   style   nbsp   

二叉搜索树第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小的数

标签:code   假设   操作   get   public   ==   node   style   nbsp   

原文地址:https://www.cnblogs.com/kexinxin/p/10203087.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!