给定一个二叉搜索树的根节点 root
,和一个整数 k
,请你设计一个算法查找其中第 k
个最小元素(从 1 开始计数)。
例:
输入:root = [3,1,4,null,2], k = 1 输出:1
解析:
遍历树,然后排序,选择第k个元素。
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def kthSmallest(self, root, k):
"""
:type root: TreeNode
:type k: int
:rtype: int
"""
lst = [] # 存储节点值的列表
def tree(root, lst): # 遍历树
if root is None:
return lst
lst.append(root.val) # 将节点的值进行存储
tree(root.left, lst) # 遍历左子树
tree(root.right, lst) # 遍历右子树
return lst # 返回列表
tree(root, lst)
lst.sort() # 排序
return lst[k-1] # 返回第k大的值