給定一棵二叉搜索樹,請找出其中第k大的節點。
示例 1:
示例 2:
限制:
1 ≤ k ≤ 二叉搜索樹元素個數
題解:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
// private int ans = 0, count = 0;
public int kthLargest(TreeNode root, int k) {
List<Integer> res = new ArrayList<>();
helper(root, res);
return res.get(res.size() - k);
}
private void helper(TreeNode root, List<Integer> res) {
if(root == null) return;
if(root.left != null) helper(root.left, res);
res.add(root.val);
if(root.right != null) helper(root.right, res);
}
//public int kthLargest(TreeNode root, int k) {
// helper(root ,k);
// return ans;
//}
//private void helper(TreeNode root, int k) {
// if(root == null) return;
// helper(root.right, k);
// if(++count == k) {
// ans = root.val;
// }
// helper(root.left, k);
//}
}