题目描述:
思路:二叉树的中序遍历,输出的结果是递增的,所以我们只要反序中序遍历就可以了,然后取第k个值就是第k大的节点,比如上面中序遍历完是1234,反序就是4321,取第一个就是4了。
代码如下:
class Solution {
int res;
int k;
public int kthLargest(TreeNode root, int k) {
this.k=k;
reverse(root);
return res;
}
void reverse(TreeNode root){//中序遍历 反序 输出是递减的
if(root==null){
return ;
}
reverse(root.right);
if(k==0){
return ;
}
if(--k ==0){
res=root.val;
}
reverse(root.left);
}
}