剑指offer(54)

剑指offer(54)

剑指 Offer 54. 二叉搜索树的第k大节点

难度简单294

给定一棵二叉搜索树,请找出其中第 k 大的节点的值。

示例 1:

输入: root = [3,1,4,null,2], k = 1
   3
  / \
 1   4
  \
   2
输出: 4

示例 2:

输入: root = [5,3,6,2,4,null,null,1], k = 3
       5
      / \
     3   6
    / \
   2   4
  /
 1
输出: 4

限制:

  • 1 ≤ k ≤ 二叉搜索树元素个数

二叉搜索树中序遍历是有序的,如果是左-根-右就是升序,右-根-左就是降序

本题找到答案就可以退出递归

class Solution {
public:
int res=0;
    int kthLargest(TreeNode* root, int k) {
        traver(root,k);
        return res;
    }
    void traver(TreeNode* root,int& k){
        if(root==nullptr)return ;
        traver(root->right,k);
        k--;
        if(!k){
            res = root->val; //根
            return;
        } 
        traver(root->left,k);
    }
};
posted @ 2022-05-05 10:42  BailanZ  阅读(20)  评论(0编辑  收藏  举报