题目描述:
给给定一棵二叉搜索树,请找出其中第k大的节点。
示例 1:
输入: root = [3,1,4,null,2], k = 1
3
/ \
1 4
\
2
输出: 4
示例 2:
输入: root = [5,3,6,2,4,null,null,1], k = 3
5
/ \
3 6
/ \
2 4
/
1
输出: 4
限制:1 ≤ k ≤ 二叉搜索树元素个数
二叉搜索树的中序遍历结果自然就是升序序列,只需要先做中序遍历并存储遍历节点的val,结果集res
是升序排列,而题目要求输出第K大的节点值。因此,需要将res
翻转然后输出res[k - 1
即可。
class Solution:
def kthLargest(self, root: TreeNode, k: int) -> int:
if root is None or k < 0: return None
res = []
def inOrder(root):
if root is None:
return None
inOrder(root.left)
res.append(root.val)
inOrder(root.right)
inOrder(root)
return None if len(res) < k else res[::-1][k - 1]