给定一棵二叉搜索树,请找出其中第 k 大的节点的值。
- 首先要知道二叉树的前中后递归遍历
- 知道二叉搜索树的中序遍历是有序的
- 知道链表的第K大的节点就是 size-K
class Solution {
ArrayList<Integer> list = new ArrayList<>();
public int kthLargest(TreeNode root, int k) {
inorder(root,list);
// 第 K 大就是 size-k
return list.get(list.size()-k);
}
// 中序遍历
public ArrayList<Integer> inorder(TreeNode root,ArrayList<Integer> list){
if(root==null){
return null;
}
inorder(root.left,list);
list.add(root.val);
inorder(root.right,list);
return list;
}
}