给定一棵二叉搜索树,请找出其中第k大的节点。
思路:中序遍历(二叉搜索树的中序遍历为从小到大排序)
输入: root = [5,3,6,2,4,null,null,1], k = 3
5
/ \
3 6
/ \
2 4
/
1
输出: 4
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def kthLargest(self, root: TreeNode, k: int) -> int:
temp = []
def helper(root):
if root.left:
helper(root.left)
temp.append(root.val)
if root.right:
helper(root.right)
helper(root)
return temp[-k]
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def kthLargest(self, root: TreeNode, k: int) -> int:
if not root or k <= 0:
return None
def LDR(root):
if root:
return LDR(root.left) + [root.val] + LDR(root.right)
else:
return []
res = LDR(root)
return res[-k]
来源:力扣(LeetCode)