您的位置:首页 > 编程语言 > Python开发

用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];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: