二叉搜索树中第K小的元素

目录

1 题目描述

2 题目分析

3 代码实现

3.1 中序遍历方法

3.2 结点计数方法


1 题目描述

给定一个二叉搜索树,编写一个函数 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

2 题目分析

       一看到求第K小的问题,应该会容易想到建立大顶堆来做,但是如果这道题采用大顶堆的方式来做的话,是比较麻烦的,还得转换为数组,这样的话就完全忽视了二叉搜索树本身的特点。

       为了利用二叉搜索树的特点,一种可以采取的方法就是对二叉搜索树进行中序遍历,遍历结果必定是个升序数组,当数组长度达到k时,那么数组末尾的元素就是二叉搜索树的第K小元素了。不过这样的话就需要一个大小为O(K)的开辟辅助空间。

       为了既利用二叉搜索树的特点,又能减少辅助空间的开销,可以直接对左子树结点进行计数,如果左子树的

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值