题目
二叉搜索树的第K大节点
一、中序遍历
何为二叉搜索树?
根据二叉搜索树的定义可以知道,二叉搜索树的中序遍历(中->根->右)正好是一个排序的list!!无巧不成书,遍历起来~
# 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:
def dfs(root):
if not root:
return
dfs(root.right)
if self.k == 0:
return
self.k -= 1
if self.k == 0:
self.res = root.val
dfs(root.left)
self.k = k
dfs(root)
return self.res
⚠️注意:
这个地方是不可以直接返回的哦~~因为是递归返回,也许是有上一层的~~