zoukankan      html  css  js  c++  java
  • Leetcode 230.二叉搜索树第k小的数

    二叉搜索树第k小的数

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

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

    示例 1:

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

    输出: 1

    示例 2:

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

    输出: 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 }
  • 相关阅读:
    udp tcp
    easy_install jinja2 mac linux
    linux 常用命令;
    Mac android 开发 sdk配置和手机连接
    ubuntu server 分区
    常见操作
    环境搭建相关
    ssh登录虚拟机上的linux
    算法学习
    转载一个 测试java类的玩意
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10203087.html
Copyright © 2011-2022 走看看