方法一:中序遍历+索引计数返回
因为题目给定的二叉搜索树
所以通过中序遍历就可以按照从大到小进行遍历
但是需要先遍历右子树再遍历左子树
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int index = 0;
int k_value = 0;
int kthLargest(TreeNode* root, int k) {
preOrder(root, k);
return k_value;
}
void preOrder(TreeNode* root,int k)
{
if( root == nullptr )
return;
preOrder(root->right,k);
index++;
if(index == k)
{
k_value = root->val;
return;
}
preOrder(root->left,k);
}
};