右->中->左遍历
该遍历方法为从大到小排序
class Solution {
public:
int out;
int n;
void interfind(TreeNode* root){
if(!root)return;
interfind(root->right);
n--;
if(!n){
out=root->val;
return;
}
interfind(root->left);
}
int kthLargest(TreeNode* root, int k) {
n=k;
interfind(root);
return out;
}
};
中序遍历
一棵二叉搜索树中序遍历即为从小到大排序
class Solution {
public:
vector<int> out;
void interfind(TreeNode* root){
if(!root)return;
if(root->left)interfind(root->left);
out.push_back(root->val);
if(root->right)interfind(root->right);
}
int kthLargest(TreeNode* root, int k) {
interfind(root);
return out[out.size()-k];
}
};