用python写leetcode【16】 -- 最长连续序列(230)
2019-03-23 14:18
405 查看
二叉搜索树中第K小的元素(230)
题目
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。
说明:
你可以假设 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 函数?
思路
二叉树的中序遍历。注意返回条件是if root,这样表达最简洁。
代码
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def kthSmallest(self, root, k): """ :type root: TreeNode :type k: int :rtype: int """ def _inorder(root,arr): if root: _inorder(root.left,arr); arr.append(root.val); if len(arr) >= k: return; _inorder(root.right,arr); arr = []; _inorder(root,arr); return arr[k-1];
相关文章推荐
- LeetCode--Longest Consecutive Sequence(最长连续序列)Python
- 【LeetCode】Python实现-674. 最长连续递增序列
- 利用python 完成 leetcode128 最长连续序列
- [LeetCode] Longest Continuous Increasing Subsequence 最长连续递增序列
- 每天一道LeetCode-----计算最长的元素连续序列长度
- LeetCode刷题-最长连续序列
- leetcode 128. 最长连续序列
- [LeetCode] Longest Consecutive Sequence 求最长连续序列
- LeetCode | Longest Consecutive Sequence(最长连续序列)
- LeetCode 最长连续递增序列
- [LeetCode] 298. Binary Tree Longest Consecutive Sequence 二叉树最长连续序列
- leetcode674. 最长连续递增序列
- [LeetCode] Binary Tree Longest Consecutive Sequence 二叉树最长连续序列
- [LeetCode 128] - 最长连续序列(Longest Consecutive Sequence)
- LeetCode 674. Longest Continuous Increasing Subsequence (最长连续递增序列)
- 128.LeetCode Longest Consecutive Sequence(hard)[数组 排序 最长连续增长子序列]
- [LeetCode] Binary Tree Longest Consecutive Sequence II 二叉树最长连续序列之二
- [LeetCode] 549. Binary Tree Longest Consecutive Sequence II 二叉树最长连续序列之 II
- leetcode 最长连续序列 longest consecutive sequence
- LeetCode 最长连续序列