给定一棵二叉搜索树,请找出其中第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
解题思想: 中序遍历(左子树-根-右子树
)结果恰好是从小到大的排序,右子树-根-左子树
遍历结果恰好是从大到小,本题问的是第K大,所以可以采用一个列表list()
存储右子树-根-左子树
遍历的结果,此时第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:
list = []
def postOrder(root):
if root == None:
return
postOrder(root.right)
list.append(root.val)
postOrder(root.left)
postOrder(root)
return list[k-1]