难度:简单
频次:35
题目:给定一棵二叉搜索树,请找出其中第 k 大的节点的值。
解题思路:递归法 DFS
注意:
- 最大的亮点:就是中序遍历后是一个递增序列
- 做一遍中序遍历,然后再get一下倒数第k个即可
代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int kthLargest(TreeNode root, int k) {
List<Integer> res=new ArrayList<>();
dfs(root,res);
return res.get(res.size()-k);
}
public void dfs(TreeNode root,List<Integer> res){
if(root==null) return;
dfs(root.left,res);
res.add(root.val);
dfs(root.right,res);
}
}