一、题目
二、思路
先遍历右子节点,在中,再左,。这样就从大到小排序了。十分简单。
需要注意的是k值需要提出来,不要作为参数传,因为会导致数据不同步。
三、代码
class Solution {
int max,k;
public int kthLargest(TreeNode root, int k) {
this.k = k;
maxValue(root);
return max;
}
void maxValue(TreeNode root){
//base case k==0 说明找到了,可以下班了直接返回
if(root == null || k == 0)return;
//遍历
maxValue(root.right);
//--k 是灵魂
if(--k == 0)max = root.val;
maxValue(root.left);
}
}