230. Kth Smallest Element in a BST

题目:

Given a binary search tree, write a function kthSmallest to find the kth smallest element in it.

Note: 
You may assume k is always valid, 1 ≤ k ≤ BST's total elements.

Follow up:
What if the BST is modified (insert/delete operations) often and you need to find the kth smallest frequently? How would you optimize the kthSmallest routine?

Hint:

    1. Try to utilize the property of a BST.
    2. What if you could modify the BST node's structure?
    3. The optimal runtime complexity is O(height of BST).

链接:  http://leetcode.com/problems/kth-smallest-element-in-a-bst/

7/25/2017

2ms, 20%

好几天终于有道自己做的题了。。。iterative inorder traversal

 1 public class Solution {
 2     public int kthSmallest(TreeNode root, int k) {
 3         Stack<TreeNode> stack = new Stack<>();
 4         TreeNode node = root;
 5         int kthSml = 0;
 6         
 7         while((node != null || !stack.isEmpty()) && k > 0) {
 8             while (node != null) {
 9                 stack.push(node);
10                 node = node.left;
11             }
12             node = stack.pop();
13             kthSml = node.val;
14             k--;
15             node = node.right;
16         }
17         return kthSml;
18     }
19 }

别人的答案

可以利用DFS求root的count,然后再从左右两边找

https://discuss.leetcode.com/topic/17810/3-ways-implemented-in-java-python-binary-search-in-order-iterative-recursive

python generator

https://discuss.leetcode.com/topic/18279/pythonic-approach-with-generator

更多讨论

https://discuss.leetcode.com/category/238/kth-smallest-element-in-a-bst

转载于:https://www.cnblogs.com/panini/p/7236107.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455062.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

声音编码

1.脉冲编码调制PCM文件格式简介 将音频数字化&#xff0c;其实就是将声音数字化。最常见的方式是透过脉冲编码调制PCM(Pulse Code Modulation) 。运作原理如下。首先我们考虑声音经过麦克风&#xff0c;转换成一连串电压变化的信号&#xff0c;如图一所示。这张图的横座标为秒&…

Elastic Stack简介

Elastic Stack简介 如果你没有听说过Elastic Stack&#xff0c;那你一定听说过ELK&#xff0c;实际上ELK是三款软件的简称&#xff0c;分别是Elasticsearch、 Logstash、Kibana组成&#xff0c;在发展的过程中&#xff0c;又有新成员Beats的加入&#xff0c;所以就形成了Elast…

webpack v3 结合 react-router v4 做 dynamic import — 按需加载(懒加载)

为什么要做dynamic import&#xff1f; dynamic import不知道为什么有很多叫法&#xff0c;什么按需加载&#xff0c;懒加载&#xff0c;Code Splitting&#xff0c;代码分页等。总之&#xff0c;就是在SPA&#xff0c;把JS代码分成N个页面份数的文件&#xff0c;不在用户刚进来…

go kegg_工具篇丨GO和KEGG富集不到通路?快试试这个超赞的功能分析工具吧

GO和KEGG富集分析是我们在筛选出差异表达基因之后&#xff0c;都会去做的套路性分析。然鹅……我相信&#xff0c;总有那么一些“倒霉孩子”会遇到跟我一样的窘境吧&#xff0c;好不容易筛选出来的差异基因&#xff0c;尝试了DAVID(https://david.ncifcrf.gov/)、Metascape(htt…

大龄程序员的未来在何方

来源&#xff1a;http://www.gad.qq.com//article/detail/30358?sessionUserTypeBFT.PARAMS.229862.TASKID&ADUIN114328649&ADSESSION1501026740&ADTAGCLIENT.QQ.5533_.0&ADPUBNO26719 作者&#xff1a;foruok 大家都对大龄技术人员的未来非常关心&#xff0c…

搭建Telnet服务器

搭建Telnet服务器 作者&#xff1a;尹正杰 版权声明&#xff1a;原创作品&#xff0c;谢绝转载&#xff01;否则将追究法律责任。 可能大家都知道现在已经很少有人用TELNET服务器&#xff0c; 因为它传输数据是以明文的方式&#xff0c;我们很容易通过抓包软件讲数据进行抓包&a…

table取tr对象 vue_Vue笔记

Vue集成了React和Angular的优点&#xff0c;摒弃了他们的缺点。Vue的官网&#xff1a;https://cn.vuejs.org/v2/api/Vue诞生于2016年&#xff0c;是现在非常流行的MVVM框架。Vue提供了“引包”的使用方法&#xff0c;初学者可以在这之下学习语法。不需要webpack&#xff0c;不需…

Beats入门简介

使用Beat收集nginx日志和指标数据 项目需求 Nginx是一款非常优秀的web服务器&#xff0c;往往nginx服务会作为项目的访问入口&#xff0c;那么&#xff0c;nginx的性能保障就变得非常重要了&#xff0c;如果nginx的运行出现了问题就会对项目有较大的影响&#xff0c;所以&…

PHP-curl

//初始化$curl curl_init();//设置抓取的urlcurl_setopt($curl, CURLOPT_URL, http://www.baidu.com);//设置头文件的信息作为数据流输出curl_setopt($curl, CURLOPT_HEADER, 1);//设置获取的信息以文件流的形式返回&#xff0c;而不是直接输出。curl_setopt($curl, CURLOPT_R…

MPlayer开发

一、介绍 不论是音频数据还是视频数据&#xff0c;我都为MPlayer项目开发过一些开源的解码器。因此我个人认为我有资格写一篇文档来介绍如何开发新的编解码器。 学习如何添加一个新的编解码器的最好方法通常是学习大量的已有代码。本文档仅仅是对代码的一个补充&#x…

可编程led灯带原理_SCPSD-250-04-27派克真空压力传感器故障和工作原理

SCPSD-250-04-27派克PARKER真空压力传感器故障和工作原理PARKER压力开关现货 PARKER压力传感器特价 派克真空压力传感器 PARKER数字压力开关2020年还剩最后2天了&#xff0c;这一年大家都过得不太容易&#xff0c;尤其是我自己这是30年以来过得最艰难的一年&#xff0c;经…

总结面试时没有回答上的内存对齐问题

前两天面试某公司时&#xff0c;没有回答上的一个问题&#xff0c;总结如下&#xff0c;以供参考。 问&#xff1a;下面这个结构类型的实例变量占用多少内存&#xff1a; struct struct1 { int i; short j; char c; }; 我反问&#xff1a;是啥语言啥机器啥编译环境…

Kibana入门安装与介绍

Kibana入门 Kibana 是一款开源的数据分析和可视化平台&#xff0c;它是 Elastic Stack 成员之一&#xff0c;设计用于和 Elasticsearch 协作。您可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作。您可以很方便的利用图表、表格及地图对数据进行多元化…

友善串口工具接收数据随机换行_使用Python3+PyQT5+Pyserial 实现简单的串口工具方法...

练手项目&#xff0c;先上图先实现一个简单的串口工具&#xff0c;为之后的上位机做准备代码如下&#xff1a;pyserial_demo.pyimport sys import serial import serial.tools.list_ports from PyQt5 import QtWidgets from PyQt5.QtWidgets import QMessageBox from PyQt5.QtC…

Vue渲染函数

前面的话 Vue 推荐在绝大多数情况下使用 template 来创建HTML。然而在一些场景中&#xff0c;真的需要 JavaScript 的完全编程的能力&#xff0c;这就是 render 函数&#xff0c;它比 template 更接近编译器。本文将详细介绍Vue渲染函数 引入 下面是一个例子&#xff0c;如果要…

数据绑定原理

一、数据单向绑定原理指先把模板写好&#xff0c;然后把模板和数据(数据可能来自后台)整合到一起形成HTML代码&#xff0c;最后把这段HTML代码插入到文档流里。缺点&#xff1a;一旦HTML代码生成就没有办法改变&#xff0c;如果有新数据重新传入&#xff0c;就必须重新把模板和…

视频解码优化

以下通过剖析一些经验来了解视频解码优化 1. 在嵌入式系统中实现MPEG4的视频解码 有两种方法可行 (1)采用ffmpeg(mplayer 的核心就是采用ffmpeg)&#xff0c;然后对ffmpeg mp4解码优化 1).对IDCT汇编化,并优化VLD的实现 ->inline&汇编化 2).根据ARM9 cache&cache…

Logstash入门简介

Logstash入门简介 介绍 Logstash是一个开源的服务器端数据处理管道&#xff0c;能够同时从多个来源采集数据&#xff0c;转换数据&#xff0c;然后将数据发送到最喜欢的存储库中&#xff08;我们的存储库当然是ElasticSearch&#xff09; 我们回到我们ElasticStack的架构图&a…

Django templates 和 urls 拆分

如果在Django项目 下面新建了blog和polls两个APP应用&#xff0c;在每个APP下面都各自新建自己的url和templates&#xff0c;那么我们需要如何进行项目配置呢&#xff1f; INSTALLED_APPS [ django.contrib.admin, django.contrib.auth, django.contrib.contenttypes, dja…

springboot怎么杀进程_线上服务平均响应时间太长,怎么排查?

线上服务平均响应时间太长&#xff0c;怎么排查&#xff1f;https://xie.infoq.cn/article/914b5c56000a3880016abd8d6前言&#xff1a;最近线上环境某个接口服务响应时间偏长&#xff0c;导致用户体验超差&#xff0c;那平时该怎么快速的排查这类问题呢&#xff1f;①、为代码…