返回二叉搜索树的第K大节点:如[4,1,2,0]的第一大节点为4,第2大节点为2.
分析:
二叉搜索树的性质:
①右节点值大于左节点值;
②二叉搜索树中序遍历顺序保持不变;
那么,对二叉搜索树进行逆序遍历,寻找第K大元素即可。
代码如下:
struct TreeNode
{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x):val(x),left(NULL),right(NULL)
};
class Solution
{
public:
int n=0;
int res=0;
int KthNode(TreeNode* root, int K)
{
if(!root || K<=0) return -1;
kthNode(root->right, K);
n++;
if(n==K) res=root->val;
Kth(root->left,K);
return res;
}
}