剑指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 @   BailanZ  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示