朴素想法就是反中序遍历 用list存下来 找第K个但是太麻烦
用递归思维就是反中序遍历的时候遍历到第K个直接返回
int res = 0;
int k;
public int kthLargest(TreeNode root, int k) {
this.k = k;
disIn(root);
return res;
}
void disIn(TreeNode root){
//反中序遍历
if (k < 1 || root == null) return ;//已经找到第K个
kthLargest(root.right,k);//找到最右侧
if (k == 1){
//第K大
res = root.val;
}
k--;//遍历的元素个数
kthLargest(root.left,k);
}