**题目:**给定一棵二叉搜索树找出第K大节点。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
//二叉搜索树中序遍历为增序排序,反之中序排序的倒叙就是降序排序,遍历的第k个节点即使第k大节点
class Solution {
ArrayList<Integer> list = new ArrayList<>();
int tmp = 0;
int res = 0;
public int kthLargest(TreeNode root, int k) {
recur(root,k);
return res;
}
void recur(TreeNode root,int k){
if(root==null) return ;
recur(root.right,k); //右子树
tmp++; //中序遍历的倒叙,从小到大依次遍历节点
if(tmp == k){ //第k大
res = root.val; //将第k个节点的值赋给tmp
return;
}
recur(root.left,k); //左子树
}
}