leetcode 二叉搜索树中第K小的元素 python

python

 

 

 

二叉搜索树中第K小的元素

 

 

给定一个二叉搜索树,编写一个函数 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 函数?

我的想法是广度优先遍历先构建一个列表,然后排个序

 1 # Definition for a binary tree node.

2 # class TreeNode(object):

3 # def __init__(self, x):

4 # self.val = x

5 # self.left = None

6 # self.right = None

7

8 class Solution(object):

9 def kthSmallest(self, root, k):

10 """

11 :type root: TreeNode

12 :type k: int

13 :rtype: int

14 """

15 # 先广度优先遍历

16 width = [root]

17 val = [root.val]

18 i = 0

19 while i < len(width):

20 cur = width[i]

21 if cur.left is not None:

22 width.append(cur.left)

23 val.append(cur.left.val)

24 if cur.right is not None:

25 width.append(cur.right)

26 val.append(cur.right.val)

27 i += 1

28 val.sort()

29

30 return val[k-1]

31

32

33

如果要频繁插入的时候,就每次插入时候用二分查找 维护这个树内元素的列表

以上是 leetcode 二叉搜索树中第K小的元素 python 的全部内容, 来源链接: utcz.com/z/389223.html

回到顶部