【LeetCode 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.
题意:
给定一个二分搜索树,返回第K小的结点
思路:
只要明白BST树的原理,只要中序遍历一遍BST树即可。求第K小的,只需遍历前K个结点就OK。
C++:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public: int ret, cnt, _k; void rec(TreeNode *root)
{
if(root->left == && root->right == )
{
cnt++;
if(cnt == _k)
ret = root->val;
return ;
} if(root->left != )
rec(root->left); cnt++;
if(cnt == _k){
ret = root->val;
return ;
} if(root->right != )
rec(root->right);
} int kthSmallest(TreeNode* root, int k) {
if(root == )
return ; _k = k; cnt = ret = ; rec(root); return ret;
}
};
Python:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None class Solution:
# @param {TreeNode} root
# @param {integer} k
# @return {integer} def __init__(self):
self.cnt = 0
self.ret = 0 def rec(self, root, k):
if root.left is None and root.right is None:
self.cnt = self.cnt + 1
if self.cnt == k:
self.ret = root.val
return if root.left is not None:
self.rec(root.left, k) self.cnt = self.cnt + 1
if self.cnt == k:
self.ret = root.val
return if root.right is not None:
self.rec(root.right, k) def kthSmallest(self, root, k):
if root is None:
return 0 self.rec(root, k) return self.ret
【LeetCode 230】Kth Smallest Element in a BST的更多相关文章
- 【树】Kth Smallest Element in a BST(递归)
		
题目: Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. ...
 - LeetCode OJ:Kth Smallest Element in a BST(二叉树中第k个最小的元素)
		
Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. Not ...
 - 【LeetCode 215】Kth Largest Element in an Array
		
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...
 - 【LeetCode】230. Kth Smallest Element in a BST (2 solutions)
		
Kth Smallest Element in a BST Given a binary search tree, write a function kthSmallest to find the k ...
 - 【刷题-LeetCode】230. Kth Smallest Element in a BST
		
Kth Smallest Element in a BST Given a binary search tree, write a function kthSmallest to find the k ...
 - [leetcode] 230. Kth Smallest Element in a BST 找出二叉搜索树中的第k小的元素
		
题目大意 https://leetcode.com/problems/kth-smallest-element-in-a-bst/description/ 230. Kth Smallest Elem ...
 - LeetCode 230. 二叉搜索树中第K小的元素(Kth Smallest Element in a BST)
		
230. 二叉搜索树中第K小的元素 230. Kth Smallest Element in a BST 题目描述 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的 ...
 - 【LeetCode】230. Kth Smallest Element in a BST
		
Difficulty: Medium More:[目录]LeetCode Java实现 Description https://leetcode.com/problems/kth-smallest- ...
 - 【LeetCode】230. 二叉搜索树中第K小的元素 Kth Smallest Element in a BST
		
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:算法题,刷题,Leetcode, 力扣,二叉搜索树,BST ...
 
随机推荐
- Java 正则表达式的总结和一些小例子
			
字符串处理是许多程序中非常重要的一部分,它们可以用于文本显示,数据表示,查找键和很多目的.在Unix下,用户可以使用正则表达式的强健功能实现这些 目的,从Java1.4起,Java核心API就引入了j ...
 - Linux解压 tar命令
			
tar [-cxtzjvfpPN] 文件与目录 ....参数:-c :建立一个压缩文件的参数指令(create 的意思):-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件! ...
 - lintcode: 中序遍历和后序遍历树构造二叉树
			
题目 中序遍历和后序遍历树构造二叉树 根据中序遍历和后序遍历树构造二叉树 样例 给出树的中序遍历: [1,2,3] 和后序遍历: [1,3,2] 返回如下的树: 2 / \ 1 3 注意 你可 ...
 - python学习[一]
			
Vamei写了很好的python教程,感谢:http://www.cnblogs.com/vamei/archive/2012/09/13/2682778.html 摘录笔记 print命令行模式: ...
 - 【Linux高频命令专题(8)】五大查询命令
			
find 格式 find 路径 -命令参数 [输出形式] 路径:告诉find在哪儿去找你要的东西 命令参数:参考下面 输出形式:输出形式很多,-print,-printf,-print,-exec,- ...
 - 多线程进行n皇后计算
			
在浏览zhihu的时候, 看到了这个问题:Linux c++服务器端这条线怎么走? http://www.zhihu.com/question/22608820 , 其中排第一的答案说的很不错.针对他 ...
 - intellij idea 注释行如何自动缩进?
			
我们指代代码注释的快捷键是 Ctrl+/ 但是加注释后"//"自动放在行首,没缩进,就像这样
 - JDK,JRE,JVM区别与联系
			
JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工 ...
 - 在Ubuntu下安装imx6linux系统的交叉编译环境遇到的问题总结
			
这段时间一直忙于手上的嵌入式项目,可以说自己从嵌入式的菜鸟一点点的入门了,关于嵌入式和imx6核心板的开发有了一点的了解,尤其是对于板子环境的搭建.硬件的开发,搭建环境,是一个很大的工程量,也是很重要 ...
 - Jquery的.post说解
			
Jquery的.post说解(一) 准备工作 ·Customer类 public class Customer { public int Unid { get; set; } pu ...